Выбор ответа Senior Типы значений и ссылочные обновлено
default и конструктор структуры без параметров
Вопрос
В C# 10+ у структуры объявлен конструктор без параметров, который ставит X = 7. Что будет в arr[0].X после var arr = new S[1];?
struct S
{
public int X;
public S() { X = 7; }
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 0. С C 10 явный конструктор без параметров у структуры разрешён, но он вызывается только при new S().
Варианты ответа
70правильный ответ- Ошибка компиляции: такой конструктор запрещён
NullReferenceExceptionпри обращении
Разбор
С C# 10 явный конструктор без параметров у структуры разрешён, но он вызывается только при new S(). Элементы нового массива, default(S) и неинициализированные поля заполняются нулями без вызова конструктора, поэтому X равен 0. Элемент массива структур не может быть null. Это частый вопрос «с подвохом» для senior.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Типы значений и ссылочные»
- Что такое boxing и unboxing
- Сравнение двух упакованных чисел через ==
- Когда происходит упаковка
- Сумма int с переполнением, как в unchecked
- Среднее с пропусками (int?)
- Модификаторы параметров и их смысл
- Арифметика с int?
- Изменение упакованной структуры