我有两种重载方法,一种是期望对象类型参数,另一种是通用参数列表。我试图了解何时调用哪个函数。我正在传递字符串对象,它正在调用通用params方法。
class Program
{
static void Main(string[] args)
{
string s = "string";
Invoke(s);
Console.ReadLine();
}
static void Invoke(object s)
{
Console.WriteLine("Object param invoked");
}
static void Invoke<T>(params T[] values)
{
Console.WriteLine("Params method invoked");
}
}
它的输出为:“ Params方法已调用”。
但是我不确定为什么总是调用此方法。我也尝试传递int参数,但再次调用了params方法。如果有人可以帮我解释一下。谢谢。
答案 0 :(得分:4)
简而言之,类型T
比Object
更具体,因为Invoke<string>
是有效的调用。