泛型类型参数的约束

class MyClass<T1,T2,T3> 
                where T2:Custom
                where T3:IComparable

 如上:泛型类有三个类型参数,T1是未绑定的,只有Custom类型或从Custom类型继承的类型的类才能使用T2的实参,而对于T3,只有实现IComparable接口的类才能用于类型实参。

 

共有5中约束类型:

  1. 类名:只有这个类型的类或从它继承的类才能用作实例参数。
  2. class:任何引用类型,包括类、数组、委托和接口都可以用作实参。
  3. struct:任何值类型都可以被用作类型实参。
  4. Interface:只有这个接口或者实现这个接口的类型才可以被用作类型实参。
  5. new():任何带有无参公共构造函数的类型都可以用作实参。这叫做构造函数约束。

 

  • 以上5种约束,最多只能有一个主约束(类名、class、struct只能存在一个),如果有则必须放在第一位。
  • 可以存在任意多的接口约束。
  • 如果存在构造函数约束,则必须放在最后。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值