Просто любопытный.
Если Вы идете:
string myString;
Его значение является нулевым.
Но если Вы идете:
int myInt;
Что значение этого является переменным в C#?
Спасибо
David
Во-первых, обратите внимание, что это применимо только для полей, а не для локальных переменных - их нельзя прочитать, пока они не будут назначены, по крайней мере, в C #. Фактически, CLR инициализирует кадры стека до 0, если у вас установлен соответствующий флаг - я считаю, что это по умолчанию. Однако это редко наблюдается - вам придется пройти через несколько уродливых уловок.
Значение по умолчанию int
равно 0 - и для любого типа это, по сути, значение, представленное битовым шаблоном, полным нулей. Для типа значения это эквивалентно вызову конструктора без параметров, а для ссылочного типа это значение null.
Обычно среда CLR очищает память нулями.
Это также значение, заданное параметром по умолчанию (SomeType)
для любого типа.
Значение унифицированной переменной типа T
всегда равно по умолчанию (T)
. Для всех ссылочных типов это null, а для типов значений см. Ссылку, которую опубликовал @Blorgbeard (или напишите код, чтобы проверить это).
Вот таблица значений по умолчанию для типов значений в C #: http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx Значение по умолчанию для ссылочных типов обычно равно null.
Строка - это ссылочный тип. Int - это тип значения. Ссылочные типы - это просто указатель на стек, направленный на кучу, который может содержать или не содержать значение. Тип значения - это просто значение в стеке, но оно всегда должно быть каким-то образом.
Значение по умолчанию для int - 0.
Полный список значений по умолчанию для каждого типа см. Здесь: http://msdn.microsoft.com/en-us/ библиотека / 83fhsxwc.aspx