Коли я оголошую intяк мінливий
int? i=null;
Чи iстає тут еталонним типом?
Коли я оголошую intяк мінливий
int? i=null;
Чи iстає тут еталонним типом?
Відповіді:
Ні, нульовим є структура. Що відбувається, це те, що нульова структура має два значення:
intдля int?, DateTimeдля DateTime?тощо).HasValueє власністю.)Коли ви встановлюєте значення типу даних, структура змінюється HasValueна true.
Із змінних типів (Посібник з програмування C #) :
Зменшувані типи є екземплярами структури System.Nullable.
і
Зменшувані типи представляють змінні типу значення, яким можна присвоїти значення null. Не можна створити нульовий тип на основі еталонного типу. (Довідкові типи вже підтримують нульове значення.)
Отже, ні, вони не є референтними типами.
Зменшувані типи не є ні типовими, ні типовими типами. Вони більше схожі на типи значень, але мають кілька властивостей референтних типів.
Природно, для нульових типів може бути встановлено значення null. Крім того, мінливий тип не може задовольнити загальне structобмеження. Крім того, коли ви позначаєте нульовий тип з HasValueрівним false, ви отримуєте nullвказівник замість коробкового зведеного типу (подібна ситуація існує і при розпакуванні).
Ці властивості роблять нульові типи нецінні типи, але вони впевнені, що вони також не є еталонними типами. Вони є власним спеціальним типом нульових значень.
Ні, тип Nullable - це насправді структура. Виконання буде інтелектуально обробляти налаштування нульового значення для вас, надаючи зовнішній вигляд еталонного типу, коли його немає ....
Зменшувані типи не можуть бути еталонними типами.