c#中的泛型
程序员文章站
2022-05-16 16:59:45
...
这篇文章主要来讲讲c#中的泛型,因为泛型在c#中有很重要的位置,对于写出高可读性,高性能的代码有着关键的作用。当我多次看到自己团队的代码中包含着大量的非泛型集合,隐式的装箱和拆箱操作时,我都会建议他们补一补泛型基
这篇文章主要来讲讲c#中的泛型,因为泛型在c#中有很重要的位置,对于写出高可读性,高性能的代码有着关键的作用。当我多次看到自己团队的代码中包含着大量的非泛型集合,隐式的装箱和拆箱操作时,我都会建议他们补一补泛型基础。
1,什么是泛型
-
- 泛型是c#2中非常重要的一个新特性,它增强了代码的可读性,将大量的安全检查从执行期转移到编译期,从而提高代码的安全性和性能。从根本上来说,泛型实现了类型和方法的参数化。
2,为什么要使用泛型,泛型解决了什么问题
我们先来看看下面的代码(代码只是为了演示泛型,没有实际的意义),看看有什么问题?
1 class PRogram 2 { 3 static void Main(string[] args) 4 { 5 ArrayList array = new ArrayList(); 6 array.Add(1); 7 array.Add(2); 8 array.Add(3); 9 ArrayList resultArray = NumberSqrt(array); 10 foreach (var item in resultArray) 11 { 12 Console.WriteLine(item); 13 } 14 } 15 public static ArrayList NumberSqrt(ArrayList array) 16 { 17 ArrayList sqrtArray = new ArrayList(); 18 foreach (var item in array) 19 { 20 sqrtArray.Add(Math.Sqrt((double)(int)item)); 21 } 22 return sqrtArray; 23 24 } 25 }View Code
-
- 首先ArrayList是一个非泛型集合,它需要的参数是object,那么我如果往集合里面装配其它的类型,在编译时也无法判断错误(比如说我装配一个字符串进去,完全是可以编译成功的)。
- 由于ArrayList需要的是一个object,那么在你将值类型装配到集合中时,会进行隐式装箱操作,在使用集合中的数据时,需要进行拆箱操作。从而影响应用程序的性能。(关于值类型装箱请参考c#中的引用类型和值类型)。
- 代码可以可读性差,完全看不明白ArrayList应该装配什么类型。
下面来看看泛型是如何解决这些问题的:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Listdouble
上一篇: 通过expdpimpdp把11g的数据迁移到10g平台的要点
下一篇: 类的继承与方法的重载实例