关于结构的默认构造函数
结构类型的构造函数与类的构造函数类似,但是 structs 不能包含显式默认构造函数,因为编译器将自动提供一个构造函数。 此构造函数会将 struct 中的每个字段初始化为默认值。有关更多信息,请参见Default Values Table (C# Reference)。 然而,只有当 struct 用 new 实例化时,才会调用此默认构造函数。 例如,下面的代码使用 Int32 的默认构造函数,因此您可以确信整数已初始化:
int i = new int();
Console.WriteLine(i);
不过,下面的代码却会导致编译器错误,因为它没有使用 new,而且尝试使用尚未初始化的对象:
int i;
Console.WriteLine(i);
或者,基于 structs 的对象(包括所有内置数值类型)可以初始化或赋值后使用,如下面的示例所示:
int a = 44; // Initialize the value type...int b;
b = 33; // Or assign it before using it.Console.WriteLine("{0}, {1}", a, b);
因此对值类型调用默认构造函数不是必需的。