C#中定义一个变量后,有没有立及给该变量分配存储空间??
这一点和C++,C有什么差别,请高手解释一下

解决方案 »

  1.   

    值类型的一般定以后,直接分配存储空间在栈上;引用类型创建实例以后分配存储空间在堆上,因为其占用空间是不定的,故为动态分配。
    C#中一个重要的不同是,结构Struct是值类型的,即存储空间分配在栈上。
      

  2.   

    不完全是这样,比如int类型,在创建一个变量以后,在栈上分配了一个32位存储空间,当另一个int变量赋值给该变量时,只是复制其值,并非将地址赋给它。
      

  3.   

    怎么不一样呢?其实所有语言对变量存储空间的分配都差不多,C#中的特色不过是结构Struct跟C++的情况不同。
      

  4.   

    哦,基本上理解了,
    C#中的特色不过是结构Struct跟C++的情况不同,这句不太明白
      

  5.   

    比如一个结构
    struct MyPoint
    {
        public int x;
        public int y;
        public MyPoint(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
    }
    C#中可以不用new关键字来声明一个结构比如可以直接用MyPoint.x,这时它是值类型;
    也可以用new来声明,MyPoint p = new MyPoint(1, 1),这时它是以用类型。