为什么只调用编译器的第二个函数而不是第一个函数?我不知道为什么它采取了第二个功能。
WriteLog("string", "string2" , "string3", "string4");
public static void WriteLog(string text, params string[] pAktionInfos)
{
WriteLog(text, pAktionInfos);
}
public static void WriteLog(string text, string text2, params string[] pAktionInfos)
{
if (string.IsNullOrEmpty(text2))
{
//Awesome Code
}
//Another Awesome Code
}
答案 0 :(得分:4)
只能调用一个函数,编译器会调用最接近原始签名且最具体的函数。
无论如何,您应该收到关于这两个功能的警告。如果不这样做,请调高警告级别。
答案 1 :(得分:1)
因为在编译器中,识别顺序从显式参数变为使用params
定义的参数。签名越具体,就越快匹配。