c#语言基础(2)理解值类型和引用类型
2015-03-25 15:52
253 查看
值类型:值类型是从System.ValueType类继承而来的类型,主要包括数值型,布尔型,结构和枚举。值类型变量直接存储数据值。值类型在堆栈中分配,因此效率高,使用值类型主要目的是为了提高性能!
值类型特性:
值类型变量都存储在堆栈中
访问值类型变量时,一般直接访问其实例
每个值类型变量都有自己的数据副本,因此对一个值类型变量进行操作不会影响其他变量
复制值类型变量时,复制的是变量的值,而不是变量的地址
值类型变量不能为NULL值,必须有一个确定的值
引用类型:引用类型主要用于构建c#应用程序对象类型数据,通过new关键字可以创建对象实例,对象实例存储在堆中
引用类型特征:
必须在托管堆中为引用类型变量分配内存
引用类型被赋值前的值都是NULL
多个引用类型变量可以同时引用一个对象,这种情形下,对一个变量的操作会影响另一个变量所引用的同一个对象
必须使用new关键字使用引用类型变量
引用类型变量是由垃圾回收机制来管理的
在托管堆中分配的每个对象都有与之相关联的附加成员,这些成员必须被初始化
eg:声明引用类型的变量
所有被称为“类”的都是引用类型,主要包括接口,类,数组和委托
值类型和引用类型的区别:
值类型继承于System.ValueType类,其他类型则为引用类型
值类型的对象分配在栈上,而引用类型却分配在堆栈中
在赋值时,值类型的变量将得到一个真实的数据副本,而对于引用类型仅仅是把对象的引用赋给变量,这就导致了多个变量引用同一个对象实例
初学者,如有错误,请指教!
值类型特性:
值类型变量都存储在堆栈中
访问值类型变量时,一般直接访问其实例
每个值类型变量都有自己的数据副本,因此对一个值类型变量进行操作不会影响其他变量
复制值类型变量时,复制的是变量的值,而不是变量的地址
值类型变量不能为NULL值,必须有一个确定的值
引用类型:引用类型主要用于构建c#应用程序对象类型数据,通过new关键字可以创建对象实例,对象实例存储在堆中
引用类型特征:
必须在托管堆中为引用类型变量分配内存
引用类型被赋值前的值都是NULL
多个引用类型变量可以同时引用一个对象,这种情形下,对一个变量的操作会影响另一个变量所引用的同一个对象
必须使用new关键字使用引用类型变量
引用类型变量是由垃圾回收机制来管理的
在托管堆中分配的每个对象都有与之相关联的附加成员,这些成员必须被初始化
eg:声明引用类型的变量
object o = new object(); //定义object类型 string str = "这是一个字符串"; //string类型是引用类型
所有被称为“类”的都是引用类型,主要包括接口,类,数组和委托
值类型和引用类型的区别:
值类型继承于System.ValueType类,其他类型则为引用类型
值类型的对象分配在栈上,而引用类型却分配在堆栈中
在赋值时,值类型的变量将得到一个真实的数据副本,而对于引用类型仅仅是把对象的引用赋给变量,这就导致了多个变量引用同一个对象实例
初学者,如有错误,请指教!
相关文章推荐
- c#基础语言编程-按值类型和引用类型传递参数
- c#基础系列之值类型和引用类型的深入理解
- C#语言学习--基础部分(十一) --值类型和引用类型
- c#基础系列1---深入理解值类型和引用类型
- c#基础语言编程-按值类型和引用类型传递参数
- [导入]理解C#值类型与引用类型
- C# 中堆栈,堆,值类型,引用类型的理解 (摘抄)
- c#基础 值类型和引用类型
- 理解C#值类型与引用类型(第一部分)
- 对C# 中堆栈,堆,值类型,引用类型的理解
- C# 中堆栈,堆,值类型,引用类型的理解
- C#基础:值类型、引用类型与ref关键字
- 理解C#值类型与引用类型
- [转]理解C#值类型与引用类型
- 理解C#值类型与引用类型(第二部分)
- C#基础(四)(C#预定义值类型和引用类型)
- [转]概念的东西不能丢-深入理解C#值类型和引用类型
- 对C# 中堆栈,堆,值类型,引用类型的理解
- 理解C#值类型与引用类型
- 理解C#值类型与引用类型(摘录)