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)
。这是为什么?
答案 0 :(得分:4)
C#编译器将始终尝试选择与参数最匹配的metod。在您的情况下,foo(int, int)
重载与您的输入参数完全匹配,而foo(params int)
重载是较弱的匹配。
如果您感兴趣,可以在C#中很好地概述方法重载:http://csharpindepth.com/Articles/General/Overloading.aspx
答案 1 :(得分:3)
因为在您的情况下,存在完全匹配的重载。