C#类中的变量内存分配问题。高手请进 本帖最后由 gyf529036756 于 2011-05-25 14:48:24 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int x = 1中的变量x是在什么时候分配内存的,我在调试过程中,int x=1是在执行构造函数之前运行的。 C#允许使用内联(inline)初始化语法来初始化类的字段。所谓内联,就是指代码中直接赋值来初始化,而不是通过构造器。 我做了个实验。就是只写A a;//后面加断点发现a为null,说明这时没有分配内存。A a = new A();//后面加断点发现a有值,说明已经分配了。不知你问的是不是这个? A a = new A();这一句做了三件事1,堆上分配内存2,调用构造,初始化对象成员3,将这个新对象的引用赋给a至于那个x,因为x是类的成员,在为对象分配内存时当然要给他分个单人间,所以x和对象是同时分配在堆上的另:方法中的变量分在线程栈上 楼上说得对,A a = new A();这条语句在定义a的同时已经实例化了,在实例化之前x是没有分配内存的。 请教一个关于数据库插入的问题 对方电脑没装.net框架怎么运行程序 C# 如何做成Windows服务(急。。。。。) GDI+函数画图,实在是不行了。急的很啊,希望高手出现来回答啊。在线等 面试问题 显示表的数据问题 int aa=(int)mRow["int"]; 高手来解答个简单问题 如何禁用Tab键的功能!! c#计算器中如何写连续按操作符的代码 一道面试题,请解释下heap的特性 C# winform项目打包后找不到添加的文件 WPF,图片如何嵌入到exe文件
所谓内联,就是指代码中直接赋值来初始化,而不是通过构造器。
//后面加断点
发现a为null,说明这时没有分配内存。A a = new A();
//后面加断点发现a有值,说明已经分配了。不知你问的是不是这个?
这一句做了三件事
1,堆上分配内存
2,调用构造,初始化对象成员
3,将这个新对象的引用赋给a至于那个x,因为x是类的成员,在为对象分配内存时当然要给他分个单人间,所以x和对象是同时分配在堆上的
另:方法中的变量分在线程栈上
在实例化之前x是没有分配内存的。