Все значимые (value) типы, встроенные в .NET, поддерживают конструкторы по умолчанию (другими словами, конструкторы без параметров) и могут быть проинициализированы с помощью ключевого слова new. Таким образом, мы можем инициализировать экземпляры значимых типов default'ными для них значениями.
Обычно мы объявляем переменные и сразу же инициализируем их с помощью литералов, однако, ничто не мешает использовать не только new, но и ключевое слово default:
int i;Далее представлены default значения встроенных типов:
int n1 = 12;
int n2 = new int();
int n3 = default(int);
🔸 bool type = false
🔸 Numeric types (e.g. int, float) = 0 or 0.0
🔸 char type = single empty character
🔸 DateTime type = 1/1/0001 12:00:00 AM
🔸 string - не значимый тип 😉
На основании замечательной статьи от Jon Skeet - Value types and parameterless constructors стоит также отметить, что:
Операции, которые вызывают parameterless конструктор:
🔸 Использование new int();
🔸 Activator.CreateInstance (обе версии);
Операции, которые не вызывают parameterless конструктор:
🔸 Объявление переменной (неважно какой: локальной, статической, поля);
🔸 Упаковка (boxing);
🔸 Инициализация массива;
🔸 Использование default(T) и new(T) в generic методах;
Больше информации вы сможете найти в уже упомянутой выше статье и по данной ссылке.
#data_types