c#中数据类型主要分为2大类:1值类型 2引用类型
C#中值类型包括简单类型、自定义结构类型、枚举类型(结构类型包括简单类型)
简单类型包括(整型、浮点型、小数型、字符型、布尔型)
自定义结构类型struct
枚举类型
C#中引用类型包括类类型、数组类型、接口类型、委托类型。
类类型包括 object类和string类
1数组的元素,不管是引用类型还是值类型,都存储在托管堆上。
2引用类型在栈中存储一个引用,其实际的存储位置位于堆。
3值类型总是分配在它声明的地方:作为字段时,跟随其所属的变量(实例)存储;
作为局部变量时,存储在栈上。
4值类型在内存管理方面具有更好的效率,并且不支持多态,适合用作存储数据的载体;
引用类型支持多态,适合用于定义应用程序的行为。
装箱 将任值类型类型转换为对象类型
拆箱 将对象类型转换为值类型
1.将一个值类型变量赋给另一个值类型变量时,将复制包含的值。
引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
2.值类型不可能派生出新的类型:所有的值类型均隐式派生自 System.ValueType。但与引用类型相同的是,结构也可以实现接口。
3.值类型不可能包含 null 值:
4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;
局部值类型变量、值类型参数等都在栈内存中。
堆是程序运行期间动态分配的内存空间,
你可以根据程序的运行情况确定要分配的堆内存的大小。
|
|