public class ViewModelBaseEx<T> : ViewModelBase where T : class, new()
{
//...........
}
我在样本中找到了这样的课程。在这个类中, “where T : class, new()”部分的含义是什么。这个方法定义中类 new() 的用途是什么。
public class ViewModelBaseEx<T> : ViewModelBase where T : class, new()
{
//...........
}
我在样本中找到了这样的课程。在这个类中, “where T : class, new()”部分的含义是什么。这个方法定义中类 new() 的用途是什么。
这意味着它T
必须是一个引用类型(通常是 a class
、interface
或delegate
数组)(但不是 a struct
)并且它必须有一个公共的无参数构造函数T()
(因此这将排除除 之外的所有先前类型class
)。
它是一个泛型类型约束。
它指定无论T
是什么,它都必须是引用类型 (a class
),并且它必须具有公共默认无参数构造函数 ( new()
)。
这允许人们这样做:
var x = new T();
没有new()
约束,这是不可能的。
基本上class, new()
是添加约束。
类意味着它应该是类类型(不允许使用结构等)
new()表示它必须有一个不带参数的公共构造函数。
这意味着它T
必须是引用(类)类型,并且它还必须具有公共默认构造函数。
请参阅此处了解更多信息:http: //msdn.microsoft.com/en-us/library/d5x73970.aspx
这里的class是为了约束T只能是Class,即不能是结构和其他值类型。
这里的 new() 是为了约束 T 必须有一个空的构造函数。
有关类型约束的更多信息,请查看 MSDN:http: //msdn.microsoft.com/en-us/library/d5x73970.aspx
“类”基本上意味着“T”是一个类类型(也可以是一个结构=>原始类型)。“new()”语法意味着“T”是一个具有空构造函数的类,因此在您的类中您可以执行以下操作:
var obj = new T();