如何理解 new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型
public sealed class Singleton<T> where T : new()
public class MyGenericClass<T> where T:IComparable { }
简单的解释一下是什么意思
public sealed class Singleton<T> where T : new()
public class MyGenericClass<T> where T:IComparable { }
简单的解释一下是什么意思
解决方案 »
- C#通过变成操作Word组件,自动生成Word文档的问题?
- 关于线程与界面的交互问题
- 这个算法怎么求。。有c#实现
- 使用 XmlSerializer 序列化对象后,我想给序列化后的 XML 文件中添加一段注释??怎么在序列化过程让它自动添加呢???
- 关于利用sqlDataAdapeter和dataSet更新数据库
- 是路径的原因吗?
- 请问我是用速马的FTPClient3.0的类,为什么从serv-u上不能下载文件夹
- 【求助】自定义控件老是报错
- window身份验证
- 現在發現做什么都不順﹐新裝了個vs 2003﹐新建項目都會出錯。散分。
- 求sqlAdapter和sqlcommand 的关系
- C#关于font小问题
说明
T:结构
类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更多信息,请参见使用可以为 null 的类型(C# 编程指南)。
T:类
类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。
T:new()
类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new() 约束必须最后指定。
T:<基类名>
类型参数必须是指定的基类或派生自指定的基类。
T:<接口名称>
类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。
T:U
为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。这称为裸类型约束。
public sealed class Singleton <T> where T : new()
这句话的意思是T所取的类型只能是一个实现了public无参构造器的非抽象类型。
public class MyGenericClass <T> where T:IComparable { }
表示T所取的类型一定是实现了IComparable 接口的类型。