原因是这样的,编译器会定义一个把所有的数据成员初始化成0(假、null)等的构造函数,这个默认构造函数确保了结构体在生成时被初始化。
而如果允许你自己定义默认构造函数,那么就存在着一种可能:你漏掉了某个成员没有初始化。这样一来会导致这个成员的值在被构造后处于未知的状态,这是C#所不允许的。
而如果允许你自己定义默认构造函数,那么就存在着一种可能:你漏掉了某个成员没有初始化。这样一来会导致这个成员的值在被构造后处于未知的状态,这是C#所不允许的。
如果允许值类型自定义默认构造函数的话,就可能影响clr的执行效率
另外:
这个是不可能的,任何值类型的构造函数都要求初始化所有字段,否则编译不通过。
这个解释够了吗?