Fra*_*k59 3 .net c# reference-type
简单代码例如:
Object test=new Object();
Run Code Online (Sandbox Code Playgroud)
我理解为将test对象分配到堆中的内存.
从MSDN引用:
引用类型的变量存储对其数据(对象)的引用
但我真的无法理解存储此变量值(引用堆数据),堆栈或堆入或其他地方的位置?
test变量存储在堆栈中 - 它保存堆上对象的地址.对象实例存储在堆上.
我建议你阅读Jeffrey Richter的.NET Type Fundamentals文章:
从托管堆分配对象时,new运算符返回对象的内存地址.您通常将此地址存储在变量中.这称为引用类型变量,因为变量实际上不包含对象的位; 相反,变量引用对象的位.
除引用类型外,虚拟对象系统还支持称为值类型的轻量级类型.无法在垃圾收集堆上分配值类型对象,表示该对象的变量不包含指向对象的指针; 变量包含对象本身.由于变量包含对象,因此不必取消引用指针以操纵对象.当然,这可以提高性能.
| 归档时间: |
|
| 查看次数: |
2059 次 |
| 最近记录: |