术语:您如何描述 Nullable<T> 的类型 T?

Posted

技术标签:

【中文标题】术语:您如何描述 Nullable<T> 的类型 T?【英文标题】:Terminology: How would you describe the type T for Nullable<T>? 【发布时间】:2011-09-20 01:43:55 【问题描述】:

谈到泛型类型时,Foo&lt;T&gt;T 在 .NET @ 中称为泛型类型Foo泛型参数类型参数 987654324@ 文档。

现在,当我处理int?Nullable&lt;Bar&gt; 之类的类型时,在描述该类型时如何引用泛型参数(即在我的示例中为intBar)?

我将其称为可空类型的基类型,但基类型通常用于在描述类层次结构时引用父类。 .所以我觉得在这里谈论基本类型是不对的。并且使用可空类型的术语通用参数让我感觉很笼统。

那么您如何谈论这些类型?

更具体地说,您将如何命名此扩展方法:

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&lt;T&gt; 时,此方法返回typeof(T) 作为结果。

【问题讨论】:

【参考方案1】:

来自规范:

一个可以为空的类型可以代表所有 其基础类型的值加上一个 额外的空值。可空类型 写成 T?,其中 T 是 底层类型

编辑:

参考: C# 4 规范部分 4.1.10 可空类型

【讨论】:

以上是关于术语:您如何描述 Nullable<T> 的类型 T?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Nullable<T> 不匹配作为通用约束的引用类型 [重复]

这种 Nullable<T> 行为与隐式转换运算符的理由是啥

非 Nullable 类型的通用约束

IEquatable<T> 和 [AllowNull]

Nullable不是泛型类, 但方法可以是泛型的;

C# 8 中 Nullable 类型和泛型的问题