C#(20)泛型

9yue5

在C#中,任何一个类型直接或者间接继承于Object。



泛型 Generic

定义:泛型能够将类型作为参数来传递

创建类型时用一个特定的符号如“T”来作为一个占位符代替实际的类型

等待在实例化时再用一个实际的类型来代替


优点:1、重用代码,保护类型的安全以及提高性能(装箱拆箱本来就是对性能的消耗)

           2、 降低强制转换或装箱操作的成本和风险

           3、可以对泛型参数进行限定以访问特定数据类型的方法


泛型的限制

泛型成员因类型不确定,可能是类、结构体、字符、枚举……

所以不能使用算术运算符、比较运算符等进行运算;可以使用赋值运算符 =


泛型类型参数


泛型类型参数可以是编译器识别的任何数据类型

泛型类型参数命名也要遵守命名规则

1. 泛型类型参数可以有多个

2. 泛型类型参数可以是编译器识别的任何数据类型

3. 泛型类型参数命名需要遵守命名规则

(1) 使用描述性名称命名泛型类型,并且使用T作为前缀

(2) 单个字母名称完全可以让人了解其表示的含义使用单个大写字母命名


泛型类型参数的约束


约束的好处 

可以增加约束类型及其继承层次结构中的所有类型所支持的允许操作和方法调用的数量

null 是空的引用 (空对象),值类型比较为false  

引用类型比较恒等空的话 为0,不恒等为false


泛型类写在<>后面{}前面

方法中写在()后

注:提示:由于在泛型当中需要比较大小,所以该泛型必须是实现了接口(IComparable)


泛型方法


泛型方法是使用泛型类型参数声明的方法,

当方法中存在某些参数的类型不明确的时候就可以使用泛型方法。

未知具体类型的参数就使用泛型类型参数替代。

           泛型方法重载

泛型类


泛型类封装了不是特定于具体数据类型的操作,

当类中存在未知参数类型的时候就可以使用泛型类

泛型类最常用于集合。 从集合中添加和移除项这样的操作都以大体上相同的方式执行,与所存储数据的类型无关。


创建泛型类的过程为:从一个现有的具体类开始,

逐一将每个类型更改为类型参数,直至达到通用化和可用性的最佳平衡。


泛型类实例化:

泛型类设计规则(怎么用泛型类)

1. 将哪些类型通用化为泛型类型参数

2. 如果存在约束,应对泛型类型参数应用什么约束

3. 是否将泛型行为分解为基类和子类

4. 是否实现一个或多个泛型接口

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • object 变量可指向任何类的实例,这让你能够创建可对任何数据类型进程处理的类。然而,这种方法存在几个严重的问题...
    CarlDonitz阅读 4,459评论 0 5
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,479评论 1 10
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,549评论 9 118
  • 感谢毛婆婆一时脑热发起的“每天读书一小时”计划,这是要帮助姨妈彻底根治懒癌晚期啊。更感谢毛婆婆同意陪娃读绘本也算完...
    田西阅读 3,443评论 0 0
  • 五月的太阳依然那么炙热多情,懒洋洋的躺在天上看着地上忙碌的人们,日复一日,一成不变。尤其是高三,整天重复着上课,下...
    一碗锅包肉阅读 1,895评论 0 0

友情链接更多精彩内容