c#泛型约束
2016-04-07 21:29
351 查看
在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的。下表列出了六种类型的约束:
约束
说明
T:struct
类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更多信息,请参见使用可以为 null 的类型(C# 编程指南)。
T:class
类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。
T:new()
类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new() 约束必须最后指定。
T:<基类名>
类型参数必须是指定的基类或派生自指定的基类。
T:<接口名称>
类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。
约束
说明
T:struct
类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更多信息,请参见使用可以为 null 的类型(C# 编程指南)。
T:class
类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。
T:new()
类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new() 约束必须最后指定。
T:<基类名>
类型参数必须是指定的基类或派生自指定的基类。
T:<接口名称>
类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。
相关文章推荐
- 读取XML来更改ipconfig的配置
- C#学习日记
- C#学习-----简单程序编写
- C#抓取ZigBee串口数据代码
- 《C#高级编程》
- C#中两个日期时间之间的时间间隔
- 派生类求两点间的距离、矩形的周长和面积
- C#WindowsMediaPlayer的属性
- C# 对XML基本操作总结
- c# 文本框纪录快捷键并处理冲突的系统热键
- C#语言中提供了枚举和整型之间的强制转换功能(SelectItem)
- c#中datagrid控件的基本使用
- C# winfrom 长时间检查不到操作,自动关闭应用程序
- c# 正则表达式如何处理换行符?
- C# 测试代码段性能耗时
- AE+C# 版本更新问题 命名空间“ESRI”中不存在类型或命名空间名称“Arcgis”(是缺少程序集引用吗?)
- C# 反射机制
- 从OC和C#中找乐趣:相同又不同的delegate
- C#中将DataTable转成List
- HP-Socket国产优秀socket通信组件推荐