Терминология: Как бы вы описали тип T для Nullable <T>? - PullRequest
1 голос
/ 22 июня 2011

Когда речь идет об универсальном типе, Foo<T>, T называется универсальным аргументом или аргументом типа универсального типа Foo в .NET System.Typeдокументация.

Теперь, когда я имею дело с типом, таким как int? или Nullable<Bar>, как мне ссылаться на универсальный аргумент (например, int или Bar в моем примере) при описаниитип?

Я бы назвал это базовым типом типа Nullable, но базовый тип обычно используется для ссылки на родительский класс при описаниииерархия классов ... так что я не считаю правильным говорить о базовом типе здесь.И используя терминологию универсальный аргумент типа Nullable, я чувствую себя к общему.

Итак, как вы говорите об этих типах?

А более конкретно, как быВы называете этот метод расширения:

public static System.Type GetXxxType(this System.Type type)
{
    if ((type.IsGenericType) &&
        (type.GetGenericTypeDefinition () == typeof (System.Nullable<>)))
    {
        return type.GetGenericArguments ()[0];
    }
    else
    {
        return null;
    }
}

Когда передано Nullable<T>, этот метод возвращает typeof(T) в результате.

1 Ответ

4 голосов
/ 22 июня 2011

из спецификации:

Обнуляемый тип может представлять все значения своего базового типа плюс дополнительное нулевое значение.Обнуляемый тип записывается как T ?, где T - базовый тип

Редактировать:

ссылка: C # 4 раздел спецификации 4.1.10 Обнуляемые типы

...