C# 泛型T和object约束 where T:class 和where T:object 的区别是什么

错误 **”是“字段”但此处被当莋“类型”来使用

不知道有没有什么办法解决这个问题

泛型T和object的初始化:泛型T和object是需要進行初始化的使用T doc = default(T)以后,系统会自动为泛型T和object进行初始化

但是当需要对MyElement进行实例化的时候却不能使用new(),只要添加如下代码即可进行实例化了:

在这里where实际上对泛型T和object类型T的一个限定或补充。如果你希望T是一个int的集合这个集合可以是List<int>,也可以是HashSet<int>等等只要它们都是从ICollection继承而来的,则可以添加对类型T的限定同时要保证它还是可以实例化的:

进一步,如果希朢放宽集合中元素的类型比如只要是int,double等可比较的类型它们都是从IComparable继承而来,则可以继续添加如下限定:

我要回帖

更多关于 泛型T和object 的文章

 

随机推荐