问题描述
/*2008年5月17日10:39:02*请问假设A是个类名*则Aaa;是不是只是声明了一个变量名aa,但是并没有给aa分配内存啊?**/usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespace__17_3{classA{publicvoidf(){Console.WriteLine("我猜,我猜猜猜!");}publicvoidg(){f();}}classProgram{staticvoidMain(string[]args){Aaa=newA();//31行为什么改为32行的代码就会出错!请指教//Aaa;//32行aa.g();}}}
解决方案
解决方案二:
没有实例化.还没有分配内存空间
解决方案三:
假设A是个类名则Aaa;是不是只是声明了一个变量名aa,但是并没有给aa分配内存啊?--yes31行为什么改为32行的代码就会出错--没有给aa分配内存
解决方案四:
没有错啊。。。
解决方案五:
哦,没看你的注释,没有实例化,就没有引用地址,就是null,null当然不能调用g()了
解决方案六:
Aaa=newA();//31行为什么改为32行的代码就会出错!请指教//Aaa;//32行没有分配内存空间..
解决方案七:
当定义一个变量后.不关你赋不赋值.都要根据类型 分配内存空间.
解决方案八:
new:分配内存
解决方案九:
实例化后就是分配了内存~
解决方案十:
实例化了之后分配内存!
解决方案十一:
如果A是一个struct,就会在栈上分配空间如果A是一个class,只会在栈上分配一个引用(4个字节),实例化的时候才会在托管堆上分配实际的内存空间,并将该引用指向分配的空间
解决方案十二:
分配空间跟赋值没关系,new就会分配空间,及时你没有把这个引用赋值给某个变量
解决方案十三:
引用7楼wfyfngu的回复:
new:分配内存
解决方案十四:
实例化后才能分配内存
解决方案十五:
应该是new了以后就分配内存了吧
解决方案:
值类型会分配,引用类型必须new才分配。类为引用类型,结构为值类型。
解决方案:
是
解决方案:
Aaa是在栈上申请了一个A类的指针要用new来在托管堆上申请空间来付给aa它就相当于C++里面的指针没有赋值的指针是不允许用的