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

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

4

6 回答 6

9

这意味着它T必须是一个引用类型(通常是 a classinterfacedelegate数组)(但不是 a struct)并且它必须有一个公共的无参数构造函数T()(因此这将排除除 之外的所有先前类型class)。

于 2013-08-30T07:33:56.967 回答
6

它是一个泛型类型约束。

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

这允许人们这样做:

var x = new T();

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

于 2013-08-30T07:33:57.640 回答
1

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

意味着它应该是类类型(不允许使用结构等)

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

于 2013-08-30T07:36:14.983 回答
0

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

请参阅此处了解更多信息:http: //msdn.microsoft.com/en-us/library/d5x73970.aspx

于 2013-08-30T07:33:48.617 回答
0

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

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

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

于 2013-08-30T07:33:50.663 回答
-1

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

var obj = new T();
于 2013-08-30T07:34:55.187 回答