您的位置:首页 > 产品设计 > UI/UE

什么是List?如何声明与初始化?引用类型 ?值类型(value type)?装箱 (boxing)?

2011-07-17 16:45 302 查看
命名空间:System.Collections.Generic
List 类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList 泛型接口。
List<string> dinosaurs = new List<string>();
确保线程安全的唯一方法是在整个枚举期间锁定集合。

List<T> 类是 ArrayList 类的泛型等效类。 该类使用大小可按需动态增加的数组实现 IList<T> 泛型接口。
在决定使用 List<T> 还是使用 ArrayList 类(两者具有类似的功能)时,记住 List<T> 类在大多数情况下执行得更好并且是类型安全的。 如果对 List<T> 类的类型 T 使用引用类型,则两个类的行为是完全相同的。 但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。
引用类型
由类型的实际值引用(类似于指针)表示的数据类型。
如果为某个变量分配一个引用类型,则该变量将引用(或“指向”)原始值。
不创建任何副本。引用类型包括类、接口、委托和装箱值类型。
值类型(value type)
一种由类型的实际值表示的数据类型。
如果向一个变量分配值类型,则该变量将被赋以全新的值副本。(这与引用类型不同,在引用类型中,赋值时不创建副本。)
值类型通常创建在方法的栈帧上,而不是在垃圾回收堆中。可以对值类型进行装箱,这是一个创建相应引用类型的过程。
  C#中的值类型包括结构类型枚举类型两大类以及char、byte、long、int、float和double等简单类型,值类型继承自System.ValueType

装箱 (boxing)
装箱是将值类型转换为 object 类型或由此值类型实现的任一接口类型的过程。
int i = 123;
// The following line boxes i.
object o = i;
// unboxing
o = 123; i = (int)o;
  在程序设计中,值类型实例到对象的转换,它暗示在运行时实例将携带完整的类型信息,并在堆中分配。Microsoft 中间语言 (MSIL) 指令集的 box 指令,通过复制值类型,并将它嵌入到新分配的对象中,将值类型转换为对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐