类和通用的通用方法new()关键字

时间:2013-08-30 07:31:42

标签: c#

 public class ViewModelBaseEx<T> : ViewModelBase where T : class, new()
 {
      //...........
 }

我在一个样本中找到了这样一个类。在这个类中,部分“的含义是什么,其中T:class,new()”。这个方法定义中class,new()的用法是什么。

6 个答案:

答案 0 :(得分:9)

这意味着T必须是引用类型(通常是classinterfacedelegate或数组)(但不是struct)和它必须有一个公共无参数构造函数T()(所以除了class之外,这将排除以前的所有构造函数。)

答案 1 :(得分:6)

这是一种通用类型约束。

它指定无论T是什么,它都必须是引用类型(class),并且它必须具有公共默认无参数构造函数(new())。

这允许人们这样做:

var x = new T();

没有new()约束,这是不可能的。

答案 2 :(得分:1)

基本上class, new()正在添加约束。

表示它应该是类型类(不允许使用结构等)

new()表示它必须有一个不带参数的公共构造函数。

答案 3 :(得分:0)

这意味着T必须是引用(类)类型,并且它还必须具有公共默认构造函数。

有关详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/d5x73970.aspx

答案 4 :(得分:0)

这里的类是将T约束为Class,即不能是结构和其他值类型。

new()这里是约束T必须有一个空构造函数。

有关类型约束的更多信息,请查看MSDN:http://msdn.microsoft.com/en-us/library/d5x73970.aspx

答案 5 :(得分:-1)

“class”基本上意味着“T”是一个类类型(也可以是一个struct =&gt;基本类型)。 “new()”语法意味着“T”是一个具有空构造函数的类,因此在您的类中,您可以执行以下操作:

var obj = new T();