结构) 类型在 C# 中属于值类型(value type),其构造函数有一些限制:
struct 有参构造函数中必须为所有成员(包括自动实现的属性,后面对于这点的说明从略)赋值
举个例子:
public...//Value2 = value2;
}
}
有时候,我们可能仅希望在 struct 的有参构造函数中初始化某些成员,其他的成员保持其默认值即可,怎么办呢?...自己对于此也有些疑惑,搜索了一下相关信息,目前是这么理解的:
直接的一个原因: CLR 不"支持"
大家都知道, C# 是基于 CLR 的, 在 CLR 中(IL层)其实是支持定义 struct 的无参构造函数的...,但是 CLR 并不保证一定能够正确调用 struct 的无参构造函数(更明确的说,就是在某些应该调用 struct 无参构造函数的情况下, CLR 并不会调用 struct 的无参构造函数)....C# 基于 CLR, 自然也不会支持定义 struct 的无参构造函数了.
那进一步的问题是,为何 CLR 不完整支持 struct 的无参构造函数呢?