Ответ 1
Вам не нужно создавать тип с нулевым значением для ссылочных типов. Они уже обнуляются. Вам нужно сделать это только для типов значений типа int, bool, decimal и т.д.
Как создать класс с нулевыми значениями (?) в С#? Как:
public class Hello1 {
public int Property1 { get; set; }
}
public class Hello2 {
Public Hello1? Property2 { get; set; } //Hello1 should work when it has "?"
}
Я хочу, чтобы класс Hello1 принимал форму "Hello1?" при необходимости.
Вам не нужно создавать тип с нулевым значением для ссылочных типов. Они уже обнуляются. Вам нужно сделать это только для типов значений типа int, bool, decimal и т.д.
Вам не нужно; ссылочные типы уже могут быть null
. Что касается структур, то просто добавит ?
. Поэтому просто удалите ?
и проверьте null
с помощью == null
, как обычно.
Просто удалите вопросительный знак. По умолчанию все классы имеют значение NULL. Только объекты типа значения (например, struct) должны быть явно допустимыми.
Все классы имеют значение NULL. nullable для типов значений, которые не могут быть null
Hello1
уже обнуляется. Вам не нужно ?
для вашей собственности.
Изменить. Я подозреваю, что вы можете установить для параметра Hello1.Property1
значение null, и вы надеетесь, что сделать Hello1
значение nullable позволит это. Это не так. Вы должны пометить Property1
как nullable, если вы это делаете.
Hello1
уже является ссылочным типом, поэтому он может быть уже null
.
Синтаксис с нулевым значением "classname?" может применяться только к ValueTypes, таким как int
, DateTime
, float
и т.д., что обычно не может быть null
.