C # /. NET: является ли `typeof (variable)` возможным языком feature?

В нескольких отдельных случаях я пытался уговорить объявленный тип из переменной, относительно далеко от ее объявления, только для того, чтобы обнаружить, что только typeof (T) работает с именами типов. Животное
Коза
Коза

Почему это невозможно сделать:

Console.WriteLine(typeof(g));
Console.WriteLine(typeof(a));

Коза
Animal

Я бегло взглянул на спецификацию и не нашел никаких противоречий. Думаю, это прояснило бы вопрос «Почему именно этот тип?» при использовании оператора typeof .

Я знаю, что компилятор может здесь. Реализация с использованием методов расширения на самом деле тривиальна:

public static Type TypeOf<T>(this T variable)
{
    return typeof(T);
}

Но это выглядит грязно, злоупотребляя выводом типов компилятора.

9
задан John Gietzen 8 November 2010 в 15:39
поделиться