有人可以解释为什么C#将方法static long Foo(params object[] args)
用于第二个表达式Foo(null)
吗? Foo(object a)
也具有正确的签名。
我如何自己找到答案?我试图浏览ILDASM,但这没有帮助:(。
class Bar {};
static short Foo<T>(params T[] args)
{
return 4;
}
static long Foo(params object[] args)
{
return 3;
}
static int Foo(object a, object b)
{
return 2;
}
static byte Foo(object a)
{
return 1;
}
static void Main(string[] args)
{
Console.WriteLine(Foo() + Foo(null) + Foo(new Bar()) + Foo(new Bar(), new Bar()));
}