关于带有 like T 的泛型类型

Ser*_*glu -3 c# generics

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

    protected T Item<T>() where T : class
    {
        return GetDataItem() as T ?? default(T);
    }
Run Code Online (Sandbox Code Playgroud)

dca*_*tro 5

where子句称为“通用约束”。在这种情况下,where T: class指示 T 必须是引用类型(即,不是 a struct)。

有关通用约束的更多信息:http : //msdn.microsoft.com/en-us/library/d5x73970.aspx 和通用类:http : //msdn.microsoft.com/en-us/library/sz6zd40f.aspx

编辑

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

  • 最后一行的小脚注:`Nullable&lt;T&gt;`(对于任何`T : struct`)本身就是一个`struct`,理论上可以是`null` (2认同)