标题:【求助】C#中编译器如果为类分配空间
只看楼主
ipipip
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-7-18
 问题点数:0 回复次数:0 
【求助】C#中编译器如果为类分配空间
先看段代码

Class A
{
  public void test()
   {
      A a=new A ();
       show();
   }
  
   public void show()
   { Console.write("ABC");}
  
}

Class program
{
  static void Main(string[] args)
        {
           
        }
}

------------------------------------------------------------------------
上面的代码在类函数中定义了一个本类的实例!

这个应该怎么去理解??



C#的编译器的工作原理是怎么样的??

然后运行的时候又是怎么样的??


我们看这句  A a=new A();
他的作用就是在堆栈中开辟一个内存空间  然后把这个连续的内存空间地址赋值给引用变量a


这个时候问题就出来了     因为这句是写在类的定义时  
因为定义还没写完  系统不知道A类型的空间大小  那就不能为A类型分配内存空间

【问题】1. 系统是怎么计算A类型的大小?



---------------------------------------------------------------------
根据 C++ 的理论
系统未对象分配内存只计算非静态的成员变量(假如C#也是这样的机制)

上面的C#例子中根本没有定义非静态的成员变量
用C#的概念就是没有静态字段
那么这个A类空间为0  所以就不用分配内存。


【问题】2.  我这么理解对吗??














.
搜索更多相关主题的帖子: 编译 空间 
2010-05-09 12:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-305940-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.769286 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved