C# 关于具有like T的泛型类型

C# 关于具有like T的泛型类型,c#,generics,C#,Generics,我想知道这是什么?我认为这是一种通用的方法。它有一个“where”部分。那怎么办?我也听说过一些泛型类。我如何学习这些?你能推荐一篇文章吗 protected T Item<T>() where T : class { return GetDataItem() as T ?? default(T); } protectedt Item(),其中T:class { 将GetDataItem()返回为T??默认值(T); } where子句被称为

我想知道这是什么?我认为这是一种通用的方法。它有一个“where”部分。那怎么办?我也听说过一些泛型类。我如何学习这些?你能推荐一篇文章吗

    protected T Item<T>() where T : class
    {
        return GetDataItem() as T ?? default(T);
    }
protectedt Item(),其中T:class
{
将GetDataItem()返回为T??默认值(T);
}

where子句被称为“通用约束”。在这种情况下,
其中T:class
规定T必须是引用类型(即,不是
结构

有关常规约束的更多信息: 和一般类:

编辑


在您提供的代码段中,需要约束,因为否则空合并运算符(?)就没有意义,因为值类型(
struct
s)不能为空。

.MSDN对泛型的引用是的,这是一个泛型方法,用于约束可以从此方法返回的参数类型。这不是重复的!这和我的问题不一样。您显示的问题与“where”部分类似。次要脚注re您的最后一行:
Nullable
(对于任何
T:struct
)本身就是一个
struct
,名义上可以是
null
,感谢您的更正。
t:struct
t:class
都不允许
t
为空,这不是很奇怪吗?