public enum EnumTest
{
EnumEntry
}
public class TestClass
{
public string FunctionMember(string s, EnumTest t = EnumTest.EnumEntry)
{
return "Normal";
}
public string FunctionMember<T>(T t)
{
return "Generic";
}
}
class Program
{
static void Main(string[] args)
{
TestClass t = new TestClass();
Console.WriteLine(t.FunctionMember("a"));
}
}
這將打印「通用」。刪除, EnumTest t = EnumTest.EnumEntry
使其打印「正常」。爲什麼通用函數成員選擇的是非泛型成員?
然而標準似乎是很清楚,從14.4.2.2更好的函數成員第一鑑別要應用是:
- 如果MP和MQ的一個不通用,但其他是通用的,那麼非通用更好。
我錯過了什麼或編譯器錯誤?
你在看C#4.0規範嗎?我懷疑你正在查看一個較舊的規範,它沒有提及可選參數,因爲那些只是在C#4.0中引入的。 – CodesInChaos 2013-02-15 13:08:19
我相信你的方法有不同的簽名。你是否嘗試過,例如傳遞int或其他東西? – 2013-02-15 13:09:22
@Codes:我沒有,但4.0規範說了同樣的事情,只是它在7.5.3.2。 – 2013-02-15 13:11:30