首页 > 其他 > 详细

C#高编 - 泛型

时间:2014-01-18 18:51:56      阅读:506      评论:0      收藏:0      [点我收藏+]

1.性能:

泛型的一个主要优点是性能,这是泛型比集合优越的原因。System.Collections.Generic名称空间中的List<T>类不使用对象,而是在使用时定义类型。

使用ArrayList类,在存储对象的时候,执行装箱操作,而在读取值的时候,进行拆箱。如:

bubuko.com,布布扣
var list = new ArrayList();
list.Add(44);//boxing-convert a value type to a reference type

int i1 = (int)list[0];//unboxing-convert a reference type to a value type

foreach(int i2 in list)
{
    Console.WriteLine(i2);
}
bubuko.com,布布扣

 

对值类型使用非泛型集合类,在把值类型转换为引用类型,和把引用类型转换成值类型时,需要进行装箱和拆箱。

装箱和拆箱操作很容易使用,但性能损失比较大,遍历许多项时尤其如此。

2.类型安全:

泛型的另一个特征是类型安全,在泛型类List<T>中,泛型类型T定义了允许使用的类型。而ArrayList可以存储不同的对象,在遍历时容易出错。

3.二进制代码的重用:

泛型允许更好地重用二进制代码。泛型类可以定义一次,并且可以用许多不同的类型实例化。泛型类型可以在一种语言中定义,在任何其它.NET语言中使用。

4.命名约定:

命名规则:

  • 泛型类型的名称用字母T作为前缀。
  • 如果没有特殊的要求,泛型类型允许用任意类代替,且只使用了一个泛型类型。就可以用字符T作为泛型类型的名称。
  • public class List<T> { }
    public class LinkedList<T> { }
  • 如果泛型类型有特定的要求(例如,它必须实现一个借口或派生自基类),或者使用了两个或多个泛型类型,就应给泛型类型使用描述性的名称。
  • public delegate void EventHandler<TEventArgs>(object sender,TEventArgs e);
    public delegate TOutput Converter<TInput, TOutput>(TInput from);
    public class SortedList<TKey, TValue> { }

C#高编 - 泛型

原文:http://www.cnblogs.com/KevinG/p/3525289.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!