c# 泛型study

1.引用类型约束:  类型实参包含任何类,接口,数组,委托,或者是已知是引用类型的另一个类型参数

class demo<T> where T:class

有效的封闭区间demo<String>;demo<int[]>;demo<person>;demo<IDisposable>

无效的封闭区间demo<int> 

 

2.值类型约束:包含值类型,包括枚举 enum。但是他将可空类型排除在外int? 

class demo<T>where T:struct

有效的封闭区间demo<int>; demo<enumDemo>

无效的封闭区间demo<int[]> ;demo<object> ;demo<StringBuild>

 

3.构造函数类型约束:无参构造函数约束

泛型方法demo

Public T demo<T>() where T:new()

{

   return T()

}

 

4 转换类型约束:类型实参必须可以通过一致性,引用或者装箱转换隐式的转换成该类型

class  demo<T> where  T:int

demo<int> ;一致性转换

 

class demo<T> where T:IDisposable

demo<SqlConnection> 引用转换

 

 public class demo<T> where T:IComparable<T>

demo<int> demo<float> 装箱转换

 

class demo<T,U> where T:U

demo<int,IComparable> 装箱转换

 

可以指定多个接口但是只能指定一个类

class demo<T> where T:IComparable<int>,Stream,IDisposable

 

5.组合约束:没有任何类型既是引用类型又是值类型的,所以这种 这种组合是禁止的                        

                     已经约束为值类型那么就不能再约束 new()

                    如果是转换类型约束 其中一个是类的话那么就要放在接口前面,而且我们不能多次指定同一个接口。

有效约束: class demo<T> where T:class,new()

                   class demo<T> where T:Struct,IDisposable

                   class demo<T,U> where T :class where U :struct  

                    

 

 

 

 

 

       

转载于:https://www.cnblogs.com/balcon/p/11548232.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值