Подтвердить что ты не робот

Как сделать "struct" Nullable по определению?

struct AccountInfo
{
   String Username;
   String Password;
}

теперь, если я хочу иметь экземпляр Nullable, я должен написать:

Nullable<AccountInfo> myAccount = null;

Но я хочу сделать struct Nullable по своей природе и его можно использовать как это (без использования Nullable<T>):

AccountInfo myAccount = null;
4b9b3361

Ответ 1

Вы не можете. Структуры считаются типами значений и по определению не могут быть нулевыми. Самый простой способ сделать это nullable - сделать его ссылочным типом.

Ответ, который вы должны задать себе: "Почему это структура?" и если вы не можете думать о действительно солидной причине, не делайте этого и делайте это классом. Аргумент о том, что структура "быстрее", действительно раздута, поскольку структуры не обязательно создаются в стеке (вы не должны полагаться на это), а скорость "полученная" варьируется в каждом отдельном случае.

См. пост Эрика Липперта о дискуссиях и скорости класса и структуры.

Ответ 2

Когда вы объявляете это, объявите его с помощью?? если вы предпочитаете

AccountInfo? myAccount = null;

Ответ 3

Короткий ответ: сделайте это класс.

Длинный ответ: эта структура изменена, какие структуры никогда не должны быть, не представляет собой единственное значение, которое всегда должно быть структурировано, и не имеет никакого разумного значения "нуля", которое также всегда должно быть структурировано, поэтому, вероятно, это не должно быть тип значения. Создание класса (ссылочный тип) означает, что он всегда может быть нулевым.


Примечание. Использование таких слов, как "никогда" и "всегда", должно выполняться с подразумеваемой "почти".