Значения по умолчанию типов C# (справка по C#)
В следующей таблице показаны значения по умолчанию для типов C#:
Тип | Default value |
---|---|
Любой ссылочный тип | null |
Любой встроенный целочисленный тип | 0 (ноль) |
Любой встроенный тип с плавающей запятой | 0 (ноль) |
bool | false |
char | '\0' (U+0000) |
enum | Значение, создаваемое выражением (E)0 , где E — это идентификатор перечисления. |
struct | Значение, создаваемое путем установки значений по умолчанию для всех полей с типами значений и значений null для всех полей ссылочного типа. |
Любой тип значения, допускающий значение NULL | Экземпляр, свойство false которого имеет значение HasValue, а свойство Value не определено. Это значение по умолчанию также называется значением 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#:
- Значения по умолчанию
- Конструкторы по умолчанию
- C# 10 — конструкторы структуры без параметров
- C# 11 — автоматические структуры по умолчанию