C# 类型的默认值(C# 参考)

下表显示 C# 类型的默认值:

类型 默认值
任何引用类型 null
任何内置整数数值类型 0(零)
任何内置浮点型数值类型 0(零)
bool false
char '\0' (U + 0000)
enum 表达式 (E)0 生成的值,其中 E 是枚举标识符。
struct 通过如下设置生成的值:将所有值类型的字段设置为其默认值,将所有引用类型的字段设置为 null
任何可以为 null 的值类型 HasValue 属性为 falseValue 属性未定义的实例。 该默认值也称为可以为 null 的值类型的“null” 值。

默认值表达式

使用 default 运算符生成默认类型值,如下面的示例所示:

int a = default(int);

可使用default 文本来初始化变量,使其具有其类型的默认值:

int a = default;

值类型的无参数构造函数

对于值类型,隐式无参数构造函数还可生成类型的默认值,如以下示例所示:

var n = new System.Numerics.Complex();
Console.WriteLine(n);  // output: (0, 0)

在运行时,如果 System.Type 实例表示一个值类型,则可以使用 Activator.CreateInstance(Type) 方法来调用无参数构造函数,以获取该类型的默认值。

注意

在 C# 10 及更高版本中,结构类型(一种值类型)可能具有一个显式无参数构造函数,该构造函数可能会生成该类型的非默认值。 因此,建议使用 default 运算符或 default 字面量来生成类型的默认值。

C# 语言规范

有关更多信息,请参阅 C# 语言规范的以下部分:

另请参阅