Я экспериментировал с nameof
с дженериками. Я не получил результат, которого ожидал. Я не уверен, что это часть спецификации или нет.
class MainClass
{
public static void Main (string[] args)
{
Console.WriteLine ($"Hello { nameof(FooBar<string>)! }");
}
}
class FooBar<T> { }
Выход, который я получаю,
Привет, FooBar!
Я бы ожидал некоторых подробностей о параметрах типа.
Я попробовал его с помощью метода и не выполнил ошибку компилятора:
class MainClass
{
public static void Main (string[] args)
{
Console.WriteLine ($"Hello { nameof(Do<string>) }");
}
public static T Do<T>() {}
}
Ошибка CS8084: аргумент для оператора nameof не может быть группой методов с аргументами типа (CS8084) (foo)
Это потому, что nameof
является конструкцией времени компиляции, а generics - это типы, инициализированные во время выполнения? Или есть другие ограничения?