В нескольких отдельных случаях я пытался уговорить объявленный тип из переменной, относительно далеко от ее объявления, только для того, чтобы обнаружить, что только typeof (T)
работает с именами типов.
Животное
Коза
Коза
Почему это невозможно сделать:
Console.WriteLine(typeof(g));
Console.WriteLine(typeof(a));
Коза
Animal
Я бегло взглянул на спецификацию и не нашел никаких противоречий. Думаю, это прояснило бы вопрос «Почему именно этот тип?» при использовании оператора typeof
.
Я знаю, что компилятор может здесь. Реализация с использованием методов расширения на самом деле тривиальна:
public static Type TypeOf<T>(this T variable)
{
return typeof(T);
}
Но это выглядит грязно, злоупотребляя выводом типов компилятора.