不确定where子句在函数声明中的含义

时间:2014-04-30 16:47:25

标签: c#

我正在做一些Pluralsight训练。教师在接口中指定了几个函数声明,其中一个如下所示:

void Add<T>(T entity) where T : class;

所以正在使用泛型,数据类型是&#34; T&#34;,它声明了一个名为&#34; entity&#34;的参数。这是T型。我不明白该条款:

&#34;其中T:class&#34;

这是什么意思?

3 个答案:

答案 0 :(得分:1)

这是一个约束,表示您的T应该是reference Type

来自MSDN:where T : class

  

type参数必须是引用类型;这也适用于任何   接口委托数组类型。

答案 1 :(得分:1)

这称为通用约束。这意味着T的类型必须是一个类。

答案 2 :(得分:1)

确保泛型类型T属于类型。

因此,示例yourClass.Add<int>(2)将显示编译时错误,因为int不是类/引用类型。