泛型是什么?
泛型的定义主要有以下两种:
1. 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是目前比较常见的定义)
2. 在编码中一些包含参数的类,其参数可以代表类或对象等等(目前大多数把这称作模板)
不论使用哪个定义,泛型的参数在真正使用泛型时都必须作出指明。
一些强类型程序语言支持泛型,其主要目的是加强类型安全及减少类转换次数,但一些支持泛型的程序语言只能达到部分目的。
类 泛型<具体类型>
{ 具体类型 值;设置值(具体类型 具体类型对象)
{ 值 = 具体类型对象; } 获取值() { 返回 值; } }1 class GenericsType2 { 3 public T Value { get; set; } 4 public void Set(T input) 5 { 6 Value = input; 7 } 8 } 9 10 class Demo11 {12 public static void Func()13 {14 var a = new GenericsType ();15 a.Set("abc");16 var a1 = a.Value;17 18 var b = new GenericsType ();19 b.Set(12);20 var b1 = b.Value;21 22 Console.WriteLine(a1 + b1);23 Console.ReadKey();24 }25 }
泛型的理解:
泛指所有可能的对象:定义一类 “东西” ,可以约束东西的一些特征 (属性和方法),例如容器作为泛型来看,其基本的特征就有 “容积” 这样的值。
“东西” 用到的时候才成为对象:泛型容器在实例化的时候,需要指明具体的类型(例如立方体),才能做计算容器的处理。类似的概念:一杯喝的东西,也可以看成是泛型, 在需要喝的时候,才实例化:一杯酒、一杯牛奶、一杯开水 ......
和抽象类不一样:抽象类定义了具体的规格例如属性、方法,使用之前就知道其基本的结构信息了,只是属性可以直接在派生类用,方法根据需要重写。已经是具体的类型了。
和接口类不一样:与抽象类相似,只是在接口类中多有的属性、方法都需要在派生类中显示显示。
参考网址:https://msdn.microsoft.com/zh-cn/library/ms172193(v=vs.95).aspx