.NET中用户创建的结构和框架结构之间的差异

mga*_*mer 7 .net c# struct value-type

为什么C#编译器不允许你编译它:

int a;
Console.WriteLine(a);
Run Code Online (Sandbox Code Playgroud)

但是允许你编译:

MyStruct a;
Console.WriteLine(a);
Run Code Online (Sandbox Code Playgroud)

其中MyStruct定义为:

struct MyStruct
{

}
Run Code Online (Sandbox Code Playgroud)

更新:在第一个案例中错误是:

错误1使用未分配的局部变量'a'

Ani*_*Ani 11

C#不允许从未初始化的本地人那里阅读.以下是适用于此上下文的语言规范摘录:

5.3明确的任务

...

如果结构类型变量的每个实例变量都被认为是明确赋值的,则它被认为是明确赋值的.


显然,由于你的结构没有字段,这不是问题; 它被认为是明确分配的.向其添加字段应该会破坏构建.

在一个有点相关的说明:

11.3.8构造函数

在构造的结构的所有字段都已明确赋值之前,不能调用实例成员函数.