值类型与引用类型
来源:互联网 发布:淘宝店铺介绍 编辑:程序博客网 时间:2024/06/04 18:11
值类型:MSDN的定义为:直接包含他们的数据,值类型的实例要么在堆栈上,要么内联在结构中。包括简单类型,结构体类型和枚举类型。
引用类型:MSDN的定义为:引用类型存储对值的内存地址的引用,位于堆上。包括用户定义的类,装箱的值类型和委托...
每个变量或者程序都有其堆栈,不同的变量不能共有同一个堆栈地址。
从上图可以看出:mystrut在堆栈中包含其实例数据,而myclass在堆栈中只是保存了其实例数据的引用地址,所以myclass变量的值的改变会影响另一个变量的值。
简单的结论:值类型实例总是分配在它生命的地方,例如声明在局部变量的时候被分配在堆栈上,声明为引用类型成员时(比如类的成员变量)会被分配到托管堆上;引用实例总是分配在托管堆上。
通用规则与比较:
1)使用IS.ValueType来判断一个类型是否为值类型(所有的值类型都继承自System.ValueType又继承自System.Object)[引用类型是直接继承System.Object]。
2)以操作符ref和out来标识值类型按引用方式传递,其分别是:ref在参数传递之前必须初始化;而out则在传递前不必初始化,但是在传递的时候必须显示赋值。
3)值类型与引用类型之间的转换过程成为装箱与拆箱。
4)sizeof()运算符用于获取值类型的大小
5)值类型也要用NEW操作符来完成初始化;而单纯的定义没有完成初始化动作,此时对成员的引用将不能通过编译。例如:
Mystruct aTest;
Console.writeLine(aTest.X);
0 0
- 引用类型与值类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- DIV+CSS 清除浮动
- 铁打的营盘流水的兵
- 多列布局之定宽+自适应
- Android studio 导入源码
- c++11 中成员变量初始化的顺序
- 值类型与引用类型
- Linux gpio 按键中断学习
- java基础知识点
- 图片的底片效果、老照片效果、浮雕效果、黑白色效果
- 高性能服务器架构思路【不仅是思路】
- JDK1.8-新特性
- Swift-UICollectionView布局之线性布局
- poj2376 贪心算法
- C#——窗体实验—进阶-文本框实验