C# 泛型约束
来源:互联网 发布:百度数据库工程师 编辑:程序博客网 时间:2024/05/16 09:59
主要约束
类型参数可指定零个或一个主要约束
不可指定的引用类型System.Object System.Array
System.Delegate System.MulticastDelegate
System.ValueType System.Enum System.Void
class Sample<T> where T: Stream{}有两个特殊的主要约束class struct
class Sample<T> where T : class{ public void M() { T tmp = null; }}tmp被设为null是合法的,因为它是引用类型。若上述代码不对T作class的约束,则将不能通过编译
class Sample<T> where T : struct{ public static T Factory() { return new T(); }}上述new T()也被为全法,T为值类型,而所有值类型都引式地有一个公共无参构造器
若改stuct为class将不能通过编译,不是所有的引用类型都有元参构造器
次要约束
类型参数可指定零个或多个次要约束
private static List<Tbase> ConvertIList<T, Tbase>(IList<T> list) where T:Tbase{ List<Tbase> baseList = new List<Tbase>(list.Count); foreach(Tbase atom in list) { baseList.Add(atom); } return baseList;}以上,指定了两个类型参数,其中T是由Tbase类型参数约束
多个约束的情形
class Sample<T1, T2> where T1 : class, T2 where T2 : IList<Int32>{}
构造器约束
类型参数可指定零个或一个构造器参数
class ConstructorConstraint<T> where T: new (){ public static T Factory() { return new T(); }}还记不记上面说过的”若改stuct为class将不能通过编译,不是所有的引用类型都有元参构造器“
加了无参构造器约束后,就可以用new()通过编译了
更清楚一点的情况
class ConstructorConstraint<T> where T: class, new (){ public static T Factory() { return new T(); }}
0 0
- c#泛型约束
- C#泛型约束
- C#泛型约束
- c#泛型约束
- C# 泛型约束
- c#泛型约束
- C# 泛型约束
- C#泛型约束
- C#泛型约束
- C# where泛型约束
- C#的泛型约束-
- C#中的泛型约束
- 浅析C# 泛型约束中的一般约束
- C# 泛型约束,泛型函数
- C#泛型学习笔记之一(约束)
- C#中的where泛型约束
- C# 泛型类型约束 where
- C#泛型中的new()约束
- Agglomerative Hierarchical Algorithms(凝聚式层次聚类)
- 通过wireshark抓取telnet登陆密码
- tar.xz文件解压命令
- C#中数组、ArrayList和List三者的区别
- CSS学习笔记(三):继承、结构和层叠
- C# 泛型约束
- react-native 调用原生模块详解
- console下纯字符实现的俄罗斯方块
- kernel下面写文件
- Android.mk小结
- iOS个人整理30-网络请求Session与Connection
- 蹲草战术
- java内部类学习笔记
- Win7 下基于 Oracle VM VirtualBox 安装 Ubuntu desktop 12.04