我有一個函數,它採用泛型類型參數。這很簡單:爲什麼我不需要在C#中指定類型參數?
private static void Run<T>(IList<T> arg)
{
foreach (var item in arg)
{
Console.WriteLine(item);
}
}
我發現我可以調用這個函數沒有指定類型參數:
static void Main(string[] args)
{
var list = new List<int> { 1, 2, 3, 4, 5 };
//both of the following calls do the same thing
Run(list);
Run<int>(list);
Console.ReadLine();
}
這編譯和運行就好了。爲什麼這個工作沒有指定類型參數?代碼如何知道T
是一個int?有沒有這個名字?
這是因爲編譯器推斷從你傳遞的列表類型 –
2014-10-01 17:25:18