2013-07-12 73 views

回答

1

Using Constructors (C# Programming Guide)

构造函数结构类型类似于类的构造函数,但结构 不能包含一个明确的默认构造函数,因为一个是由编译器自动提供 。

再检查一下这个Why can't I define a default constructor for a struct in .NET?

+0

为什么不能在C++一样 - 当明确的默认构造函数提供的使用它,在未设置生成和编译器提供的使用呢? –

+0

@BorisPitel:.NET假定*任何类型*的存储位置可以通过填充其占用的内存来初始化为其默认值。这将设置参考类型的位置或者可为空值为'null',将数字基元设置为零,并将结构的所有字段设置为它们各自类型的默认值。这样的设计意味着系统可以初始化任何类型 - 无论多么复杂 - 只需填充零即可。还要注意能够自动调用更复杂的构造函数的有用性...... – supercat

+0

......在许多情况下,它将依赖指定复制构造函数和C++风格的析构函数的能力;在这里再一次,.NET假定复制一个结构所需要的唯一东西是复制其占用的内存(这再次仅需要知道大小),并且销毁结构所需的唯一东西是放弃或覆盖它占据的空间。这样的假设大大简化了框架和语言。尽管我很乐意授予适当的结构体构造函数,复制构造函数和析构函数通常很有用,但不清楚它们是否值得花费大量成本。 – supercat

相关问题