泛型是什么?
泛型的定义主要有以下两种:
1. 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是目前比较常见的定义)
2. 在编码中一些包含参数的类,其参数可以代表类或对象等等(目前大多数把这称作模板)
不论使用哪个定义,泛型的参数在真正使用泛型时都必须作出指明。
一些强类型程序语言支持泛型,其主要目的是加强类型安全及减少类转换次数,但一些支持泛型的程序语言只能达到部分目的。
类 泛型<具体类型>
{
具体类型 值;
设置值(具体类型 具体类型对象)
{
值 = 具体类型对象;
}
获取值()
{
返回 值;
}
}
1 class GenericsType<T> 2 { 3 public T Value { get; set; } 4 public void Set(T input) 5 { 6 Value = input; 7 } 8 } 9 10 class Demo 11 { 12 public static void Func() 13 { 14 var a = new GenericsType<string>(); 15 a.Set("abc"); 16 var a1 = a.Value; 17 18 var b = new GenericsType<int>(); 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