Чи є опорні типи посилальних типів?


Відповіді:


136

Ні, нульовим є структура. Що відбувається, це те, що нульова структура має два значення:

  1. Значення типу даних ( intдля int?, DateTimeдля DateTime?тощо).
  2. Булеве значення, яке вказує, чи було встановлено значення типу даних. ( HasValueє власністю.)

Коли ви встановлюєте значення типу даних, структура змінюється HasValueна true.

Зменшувані типи (Посібник з програмування C #)


26

Із змінних типів (Посібник з програмування C #) :

Зменшувані типи є екземплярами структури System.Nullable.

і

Зменшувані типи представляють змінні типу значення, яким можна присвоїти значення null. Не можна створити нульовий тип на основі еталонного типу. (Довідкові типи вже підтримують нульове значення.)

Отже, ні, вони не є референтними типами.


14

Зменшувані типи не є ні типовими, ні типовими типами. Вони більше схожі на типи значень, але мають кілька властивостей референтних типів.

Природно, для нульових типів може бути встановлено значення null. Крім того, мінливий тип не може задовольнити загальне structобмеження. Крім того, коли ви позначаєте нульовий тип з HasValueрівним false, ви отримуєте nullвказівник замість коробкового зведеного типу (подібна ситуація існує і при розпакуванні).

Ці властивості роблять нульові типи нецінні типи, але вони впевнені, що вони також не є еталонними типами. Вони є власним спеціальним типом нульових значень.


6

Ні, тип Nullable - це насправді структура. Виконання буде інтелектуально обробляти налаштування нульового значення для вас, надаючи зовнішній вигляд еталонного типу, коли його немає ....


2
Я б запитував "розумно впоратися", досить суб'єктивно. Особисто я вважаю поведінку заплутаною і часто дратує.
nicodemus13


0

Вам не потрібно буде робити еталонний тип нульовим типом, оскільки ви можете передати нуль на його місце.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.