代码之家  ›  专栏  ›  技术社区  ›  chakmeshma

结构是否具有默认构造函数?

  •  1
  • chakmeshma  · 技术社区  · 6 年前

    我在某个地方读到 new 实例化 struct

    3 回复  |  直到 6 年前
        1
  •  2
  •   Henk Holterman    6 年前

    这是否意味着结构将通过默认的隐藏构造函数初始化其值?

    是的,因为所有成员字段都将设置为 default(T) 价值观。

    memset(ptr, 0, sizeInBytes) . 实际发生的是一个实现细节。

        2
  •  0
  •   HMZ    6 年前

    注意:例如,CLR允许结构在IL语言中有一个无参数的构造函数。

        3
  •  0
  •   supercat    6 年前

    .NET中每种占用N字节的存储位置都有一个默认值,其表示形式是一个初始化为零的N字节序列。任何引用类型的默认值将表现为空引用,任何数值类型的默认值将表现为0,结构类型的默认值将表现为其成员都具有默认类型的实例。当 包含 它是创建的;存储位置类型中与进程相关的唯一方面是其大小。如果结构类型 Foo ,创建该类的实例将为结构保留16个字节并将其初始化为零,而不调用该结构的任何类型的构造函数。