考虑一下这个代码块:
struct Animal
{
public string name = ""; // Error
public static int weight = 20; // OK
// initialize the non-static field here
public void FuncToInitializeName()
{
name = ""; // Now correct
}
}static字段,而不能在non-static字段中初始化?non-static?发布于 2010-02-21 06:56:23
看看为什么值类型不能具有默认的构造函数?
发布于 2011-11-23 00:43:33
CLI希望能够分配和创建任何需要'n‘字节内存的值类型的新实例,只需分配'n’字节并用零填充它们。CLI没有理由提供一种方法来指定在任何包含结构的实体对外部代码可用之前,必须在其中的每个结构上运行构造函数,或者每当创建特定n字节结构的实例时,编译器都应该复制一个‘模板实例’。然而,实际上,CLI不允许这样的事情。因此,编译器没有理由假装它有一种方法来确保结构将被初始化为除内存填充的零默认值之外的任何东西。
发布于 2010-02-21 06:56:06
不能在结构中编写自定义默认构造函数。实例字段初始化器最终需要移动到无法定义的构造函数中。
静态字段初始化器被移动到静态构造函数中。可以在结构中编写自定义静态构造函数。
https://stackoverflow.com/questions/2305122
复制相似问题