C#进阶语法复习——泛型约束

Posted on 2021-05-26 10:41  Nicela  阅读(151)  评论(0)    收藏  举报

泛型回顾

 

 使用:

 

 

(1)泛型约束

注意最外层的引用类型约束会影响内部泛型函数的约束

 

 值类型约束

//声明

 

 //使用

写引用类型就会报错了,因为约束为值类型

 

 同理,泛型函数中的类型不对应也会报错,前面对泛型函数的参数也做了约束

 

这样就不会报错

 

 

 ************************************************************

引用类型约束

使用:

 

 

 

 **********************************************************

公共的无参构造约束

注意:必须是两个条件,一个是公共的,一个是无参构造

 

另外声明两个类,其中一个里面有默认的无参构造函数,另一个写了有参构造函数,导致无参构造函数会被顶掉。

 

 

 //使用;

不会有问题,因为默认就会有个无参构造函数

 

用test2就会报错,因为test2重新声明了有参构造函数,无参被顶掉了

 

 

 里面可以写结构体,因为结构体的默认构造函数顶不掉,不管有没有声明带有参数的构造函数,结构体的无参构造函数永远都在。同时不能是abstract抽象类型

 

 **************************************************

类约束

 必须是类或者是该类的派生类

 

 

****************************************************************

接口约束

 

 

 如果是接口约束,那么使用时类型只能是该接口或者该接口的派生类

 

 *****************************************************

另一个泛型字母

要么这个T是U本身,要么这个T是U的派生类型

 

 使用:

 

 *******************************************************

(3)约束的组合使用

表示,既要是引用类型,也要是无参公共非抽象构造函数

 

 并不是所有类型都是可以组合使用的,如下:

因为结构体本身就有无参公共非抽象构造函数,这就显得多余了  

 

 注意:一般new()一般写在最后

***************************************************

多个泛型有约束

记住泛型约束的写法:where 泛型字母:约束的类型

 

 *********************************************************

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3