У меня есть функция, которая принимает общий аргумент типа. Это довольно просто:Почему мне не требуется указывать аргументы типа в 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? Есть ли имя для этого?
Это потому, что компилятор выводит тип из списка переданных в –