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