У всех объектов есть значение по умолчанию?
Абсолютно нет. Например, строка «abc» является объектом, но она не имеет значения по умолчанию. Число 12 является объектом, но оно не имеет значения по умолчанию.
Однако все типов имеют значение по умолчанию. Помните, что объекты: экземпляры типов; объекты существуют во время выполнения. Типы - это концепция времени компиляции. Не путайте типы с объектами; они так же различны, как строка «The New York Times» и фактическая копия сегодняшней New York Times.
Значения, которые могут храниться в переменной опорного типа являются либо ссылки на объекты или нуль. Следовательно, имя «ссылочный тип»: значение переменной ссылка тип ссылка (или null).
Значения, которые могут храниться в переменной значение типа объекты, которые являются значения этого типа. Следовательно, имя «тип значения» - значение переменной типа значения - это значение .
(я опускаю типы указателей из обсуждения, для наших целей, предположу, что все типы указателей логически совпадают с типом значения IntPtr.)
Значение по умолчанию любого ссылочного типа является нулевым эталонным значением.
Значение по умолчанию для любого типа числового значения - int, decimal и т. Д. - это нуль этого типа. (Типы, которые поддерживают множественные представления нуля, например float, выбирают положительный ноль.) Значение по умолчанию bool равно false. Значение по умолчанию для любого типа значений с нулевым значением - это нулевое значение этого типа значений.
Значение по умолчанию любого другого типа значения рекурсивно определяется как значение этого типа, сформированное путем установки всех полей типа их значений по умолчанию.
Это ясно?
Почему вы спрашиваете? Что «да!» (Или «нет!») Изменится для вашего кода? – pascal
Это значение по умолчанию не является значением по умолчанию;) –