C#高编 - 泛型

1.性能:

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

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

C#高编 - 泛型
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);
}
C#高编 - 泛型

 

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

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

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#高编 - 泛型

上一篇:Appium 服务命令行参数


下一篇:[Typescript] “Partial” Mapped Type