首页 新闻 搜索 专区 学院

"值类型存储在栈中,引用类型存储在堆中"的疑问

0
悬赏园豆:40 [待解决问题]

谢谢每一个好人百忙之中来解决别人的疑问!

比如:
//学生
class student
{
   public string name;
   public int age;
   public student(string _name, int _age)
   {
      this.name=_name;
      this.age=_age;
   }
}
//班级
class Classes
{
   ③public string classesName;
        ⑤public student oneStu;
   public Classes(string _calssesName)
   {
      this.classesName=_calssesName;
   }
   public void someDeal(string stuName,int stuAge)
   {
      ⑥int i=0;
      ⑦string strSome="aaa";
      ⑤oneStu=new student(stuName,stuAge);  
   }
}

如果是在控制台应用程序中:

static void main() {

   ①.int  MI=0;  

   ②.stuClasses oneClass=new stuClasses("软件***");  

   ④.c.someDeal("张三",18);

}

请问我这样分析是否正确:

(一)

①.MI存储在栈中,

②.oneClass存储在栈中,表示指向Classes的一个实例,实例存储在堆中

③.classesName表示为2中的实例字段,存储在堆中

④.⑤s存储在2中实例的堆中,并且指向另外一个堆student的实例

其他疑问:

(二).对于局部变量⑥⑦是如何存储的

(三).如果我把⑤换成student oneStu=new student(stuName,stuAge);⑤又应该如何理解

(四).对于asp.net,我不知道有没有main函数,那么哪些数据表示在栈中,哪些数据表示在堆中呢。我们一直在使用类库,那么对于一个生命周期,难道我们操作和处理的全部都是堆中的数据吗?栈又何去何从呢?

由于初学,可能提的问题本身就有问题,请大牛纠正,谢谢!!!

月下*独的主页 月下*独 | 初学一级 | 园豆:128
提问于:2013-06-17 10:10
< >
分享
所有回答(1)
0

局部变量名分配在堆栈中,局部变量的值,按照 值类型和引用类型来分配。要了解 分配,不只是知道 分配在哪,重要的是 把 分配图 画出来 。

Qlin | 园豆:2403 (老鸟四级) | 2013-06-17 11:04

其他问题能不能帮忙回答一些呢?

还有如果有时间能否帮忙根据上面的类代码,画一张图?谢谢了!

支持(0) 反对(0) 月下*独 | 园豆:128 (初学一级) | 2013-06-17 13:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册