什么是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 指令,通过复制值类型,并将它嵌入到新分配的对象中,将值类型转换为对象
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 指令,通过复制值类型,并将它嵌入到新分配的对象中,将值类型转换为对象
相关文章推荐
- null是什么类型,初始化null在内存中是如何分配内存的?
- 如何初始化引用类型的成员变量
- java List类型传递是值还是引用?如何传递值?
- 1.在使用new创建数组后,此时数组还是一个引用数组。 只有再创建新的对象,并把对象赋值给数组引用,到此初始化结束2.什么是引用类型?
- java List类型传递是值还是引用?如何传递值?
- 成员变量中的引用类型为null有意义时如何比较值是否相等
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱(转载)
- 在循环中总是显示初始化引用类型的数组
- 格物致知--《Effective C#》读书笔记--验证接口引用指向装箱后的值类型时无需拆箱
- 6个重要的.NET概念栈,堆,值类型,引用类型,装箱,拆箱
- 如何简单地实现引用类型的深度克隆
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
- 当你不确定list是何种类型的时候,该如何遍历?
- Java值类型和引用类型,以及复制的是什么东西
- utl_dbws.ANYDATA_LIST类型初始化问题
- mybatis查询如何返回List<Map>类型数据
- xsd中包含有List、数组类型定义,在相应的xml中如何实现相应的值?
- C#如何识别引用的真实类型(一)
- 如何理解c和c++的复杂类型声明(转载)
- 基本数据类型的包装类型作为参数传递,以及其他引用类型作为参数传递,以及List中值的交换的一些问题