使用params关键字重载方法

时间:2015-02-17 12:05:43

标签: c# 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)。这是为什么?

2 个答案:

答案 0 :(得分:4)

C#编译器将始终尝试选择与参数最匹配的metod。在您的情况下,foo(int, int)重载与您的输入参数完全匹配,而foo(params int)重载是较弱的匹配。

如果您感兴趣,可以在C#中很好地概述方法重载:http://csharpindepth.com/Articles/General/Overloading.aspx

答案 1 :(得分:3)

因为在您的情况下,存在完全匹配的重载。