使用params关键字重载方法
class D { public void foo(int z, int x) { Console.WriteLine("foo with two parameters"); } public void foo(params int[] z) { Console.WriteLine("foo with two params parameter"); } } class Program { public static void Main() { D obj = new D(); obj.foo(10,20); } }
当我运行此代码时,执行方法foo(int x, int y)
而不是foo(params int[] z)
。 为什么是这样?
C#编译器将始终尝试选择与参数最匹配的metod。 在你的情况下, foo(int, int)
重载完全匹配你的输入参数,而foo(params int)
重载是一个较弱的匹配。
如果您有兴趣,可以在C#中很好地概述方法重载: http : //csharpindepth.com/Articles/General/Overloading.aspx
因为在您的情况下,存在完全匹配的重载。
- 需要在.net中使用数据库表模式获取空数据表
- 如何在unit testing中使用Moq和DbFunction来防止NotSupportedException?
- NHibernate.Mapping.ByCode.Conformist.ClassMapping和FluentNHibernate.Mapping.ClassMap有什么区别?
- 在WPF中动态添加文本框
- 尝试使用HttpClient上传文件时,Web Api的RequestEntityTooLarge响应
- 数据表作为ReportViewer中的数据源
- 如何检测单元格值改变datagridview c#
- 选择哪种C#方法重载?
- 引用同一程序集的多个版本