日期:2014-05-16  浏览次数:20837 次

关于C#中结构体的一点疑惑
在C#中结构体的初始化有两种方式,一种是用new调用无参构造函数初始化,还有一种是声明一个结构体类型的变量然后对该变量的成员逐个赋值初始化。第一种方式会在堆中创建一个结构体对象,而该种方式声明的结构体变量保存在栈中,变量值就是前面在堆中创建的结构体对象的地址;第二种方式,不太明白,到底会不会创建结构体对象,各个变量是保存在栈中的还是堆中的。求大牛指点。。。。。。
------解决方案--------------------
new不new 都是存在栈上
------解决方案--------------------
引用:
Quote: 引用:

new不new 都是存在栈上

真的啊  能不能解释详细点

是真的,比真金还真
------解决方案--------------------
结构体属于值类型,栈中创建。
------解决方案--------------------
结构是"值类型",类是"引用类型",这就是差别,这2个名词,可以去百度检索.
结构对象可以声明后,不用= new ...初始化,不过针对结构体的成员,不会调用构造函数,所以为了方便,习惯的方式还是 = new ...
结构定义中,不允许声明一个没有参数的构造函数,因为没有必要.
------解决方案--------------------
"值类型":在栈中
"引用类型" :在堆中