Комментарии 5
Интересно, а почему вводят новый модификатор типа для nullable, а не для non-null типа?
Ведь разумнее же, что были типы без модификатора по сути nullable -- ну так и оставить их. Ну или хотя бы оставить семантику на время миграции:
string implicit_nullable;
string? explicit_nullable;
string! explicit_nonnull;
А уже спустя 2-3 версии (и года) сменить семантику для implicit объектов...
В решарпере можно было выбирать, как воспринимать нуллабельные объекты - оптимистично (то что без аннотаций - скорее всего не null) или пессимистично (то что без аннотации - скорее всего null).
Вроде для NRT есть что-то похожее при взаимодействии аннотированного и не-аннотированного кода, но я не уверен.
В подавляющем большинстве случаев требуется именно nonnull. Пришлось бы везде ! писать - этот некрасиво и неудобно.
По-прежнему актуален и очень полезен прошлогодний доклад про nullable в unity c девгамма.
Nullable reference types в Unity простыми словами