为什么struct不能有无参数构造函数

为什么struct不能有无参数构造函数? 为CLR执行此操作有什么问题?为什么不允许这样做? 请解释一下,因为我不明白。

我不能有一个显式的无参数构造函数,只有隐式的构造函数,它将所有成员初始化为默认值。

虽然CLR允许它,但C#不允许结构具有默认的无参数构造函数。 原因是,对于值类型,编译器默认情况下既不生成默认构造函数,也不生成对默认构造函数的调用。 因此,即使您碰巧定义了默认构造函数,也不会调用它,这只会让您感到困惑。 为避免此类问题,C#编译器不允许用户定义默认构造函数。 并且因为它不生成默认构造函数,所以在定义字段时无法初始化字段,…

可以在以下url找到相当合理的解释: http : //en.csharp-online.net/CSharp_FAQ : _Why_must_struct_constructors_have_at_least_one_argument

引用: “.NET公共语言运行时(CLR)不保证将调用无参数构造函数。如果允许结构体具有默认的无参数构造函数,则暗示将始终调用默认构造函数。然而,CLR使没有这样的保证。“