问个基础问题, C# 中的结构使用 new 来初始化, 标识符会成为引用(跟踪句柄)吗?
时间:2011-12-14
来源:互联网
[code=C#]
public struct OMG
{
public int a;
public OMG(int inInt)
{
this.a = inInt;
}
}
[/code]
现在用 new 来初始化它:
[code=C#]
OMG omg = new OMG(37);
[/code]
这个 omg 是跟踪句柄引用还是直接表示这个实例对象? 这个实力对象被放在堆中还是栈中?
作者: pitsou7 发布时间: 2011-12-14
作者: stonespace 发布时间: 2011-12-14
作者: stonespace 发布时间: 2011-12-14
作者: enter89 发布时间: 2011-12-14
c#的new运算符并不隐含要在堆中分配内存的操作,而只是用适当方法创建实例并调用构造函数,如果有构造函数的话,
作者: stonespace 发布时间: 2011-12-14
OMG omg = new OMG(37); 这句话如果在方法中调用,那么omg必定分配在栈中,
那么是否有那种 omg 被分配在堆中的情况?
作者: pitsou7 发布时间: 2011-12-14
class A
{
public OMG omg=new OMG(37);
}
这样,omg作为类A实例的一部分就被分配在堆中了,
引用 2 楼 stonespace 的回复:
OMG omg = new OMG(37); 这句话如果在方法中调用,那么omg必定分配在栈中,
那么是否有那种 omg 被分配在堆中的情况?
作者: stonespace 发布时间: 2011-12-14
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28