![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
泛型
黄海几吹夏
这个作者很懒,什么都没留下…
展开
-
1.5.1 泛型总览
泛型是.net 中重要的一部分。 那么接下来将从一下几个方面来介绍泛型 1、性能 2、类型安全 3、二进制代码的重用 4、代码膨胀 5、命名手册 1.5.1. 1 泛型提高了性能 首先回顾一下值类型和引用类型: 值类型是存在栈中的,引用类型是存在堆中的,C#类为引用类型,结构体为值类型。 对于.Net来说,值类型转化为引用类型是很容易的。 举个例子,当int类型转化为objec...原创 2019-08-22 14:34:21 · 73 阅读 · 0 评论 -
1.5.2 如何以及为何创建泛型类
创建泛型类,我们先从一个非泛型类来开始 public class LinkedListNode { public LinkedListNode(object value) => Value = value; public object Value { get; } public LinkedListNode Next { get; internal set; } ...原创 2019-08-23 16:03:00 · 105 阅读 · 0 评论 -
1.5.3 泛型类的特征
当我们定义一个泛型类时,如果传入的类型不确定为值类型或者为引用类型,那么为题就来了,如果给一个T类型的变量赋值? 值类型的不能位null,引用类型不能位0等等。如果泛型类型不需要对象类的特性,但需要调用泛型类中的某些特定方法,又该如何处理? 那么接下来,我们将讨论: 默认值 约束 继承 静态成员 本例从一个通用文档管理器开始,该文档管理器用于从队列读写文档和向队列读写文档。首先创建一...原创 2019-08-23 17:39:02 · 138 阅读 · 0 评论 -
1.5.4 泛型接口(协变和抗变)
使用了泛型接口,我们不再像以前那样去处理一些方法,比如: 以前版本中存在这样一个方法: public interface IComparable<in T> { int CompareTo(T other); } public class Person: IComparable { public int CompareTo(object obj) { ...原创 2019-08-26 11:08:02 · 185 阅读 · 0 评论 -
1.5.5 泛型结构
同泛型类,也存在泛型结构。除了泛型结构不具有继承外,其他的和泛型类差不多。 在本章节中我们将使用泛型结构Nullable<T> ,这是在.net framwork框架中存在的。 举个例子:数据库中的数字和编程语言中的数字有个重要的区别,数据库中的数字可以为空,但C#中的的数字不能为空,因为,int32是一个结构体,他是一个值类型,不能为空。 如果解决这种办法,我们可以将数据库或者...原创 2019-08-26 14:59:34 · 237 阅读 · 0 评论 -
1.5.6 泛型方法
除了定义泛型类,泛型结构外,还可以定义泛型放啊发,泛型方法可以在泛型类型定义 ,也可以在非泛型类中定义。 下面是定义的一个泛型方法,该泛型类型用于两个参数。(前面有介绍ref关键字) void Swap<T>(ref T x, ref T y) { T temp; temp = x; x = y; y = temp; } 通过传入类型来调用泛型类...原创 2019-08-26 16:58:46 · 112 阅读 · 0 评论