Подтвердить что ты не робот

Каково значение по умолчанию члена в массиве?

Я создаю массив таким образом:

int array[] = new int[4];

Каковы значения по умолчанию для этих четырех участников? Является ли он нулевым, 0 или не существует?

4b9b3361

Ответ 1

Это 0. Оно не может быть нулевым, поскольку значение null не является допустимым значением int.

Из раздела 7.6.10.4 спецификации С# 5:

Все элементы экземпляра нового массива инициализируются значениями по умолчанию (§5.2).

И из раздела 5.2:

Значение переменной по умолчанию зависит от типа переменной и определяется следующим образом:

  • Для переменной типа значения значение по умолчанию совпадает с значением, вычисленным конструктором default-types по умолчанию (§ 4.1.1).
  • Для переменной ссылочного типа значение по умолчанию равно null.

Инициализация значений по умолчанию обычно выполняется путем того, что диспетчер памяти или сборщик мусора инициализируют память до всех бит-ноль, прежде чем он будет назначен для использования. По этой причине удобно использовать all-bits-zero для представления нулевой ссылки.

(В качестве детализации реализации есть несколько хитростей вокруг первой точки маркера. Хотя сам С# не позволяет объявлять конструктор без параметров для типов значений, вы можете создать свои собственные конструкторы без параметров для типов значений в IL. Не верю, что эти конструкторы вызываются в инициализации массива, но они будут вызываться в выражении new X() в С#. Однако это вне области С# spec.)

Ответ 2

Значение по умолчанию автоматически инициализированной переменной типа T, такое как элемент массива или поле экземпляра, совпадает с значением default(T). Для ссылочных типов и типов указателей оно равно null. Для числовых типов это нуль этого типа. Для bool это неверно. Для типов struct это значение struct имеет все свои поля, инициализированные значениями по умолчанию.

Ответ 4

Целые числа не могут быть NULL. Они будут иметь значение "0". Даже если вы попытаетесь назначить NULL на int из кода, вы не сможете этого сделать.