public class ViewModelBaseEx<T> : ViewModelBase where T : class, new()
{
//...........
}
我在一个样本中找到了这样一个类。在这个类中,部分“的含义是什么,其中T:class,new()”。这个方法定义中class,new()的用法是什么。
答案 0 :(得分:9)
这意味着T
必须是引用类型(通常是class
,interface
,delegate
或数组)(但不是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)
new()这里是约束T必须有一个空构造函数。
有关类型约束的更多信息,请查看MSDN:http://msdn.microsoft.com/en-us/library/d5x73970.aspx
答案 5 :(得分:-1)
“class”基本上意味着“T”是一个类类型(也可以是一个struct =&gt;基本类型)。 “new()”语法意味着“T”是一个具有空构造函数的类,因此在您的类中,您可以执行以下操作:
var obj = new T();