? Что такое Nullable reference types
Nullable reference types допускает присваивать значение null ссылочным типам.
? Какие преимущества дает концепция ссылочных nullable-типов
Design time анализ
Четкие контракты API
Проверка Null состояния статическим анализом IDE, помогает устранить исключения
System.NullReferenceException
? Требования
.NET Standard 2.1+
Unity 2021+
? Как включить статический анализ
Для анализа отдельных сборок
Создаем файл csc.rsp рядом со сборкой asmdef :

В содержимое csc.rsp добавляем аргумент nullable :
-nullable:enable
Для анализа отдельных .cs файлов
В содержимое .cs добавляем контекст аннотаций #nullable :
#nullable enable namespace Sandbox.Domain { public struct User { public int Id { get; set; } public string Nickname { get; set; } public string? Phone { get; set; } } }
Использование Nullable типа в свойстве Phone, указывает что значение можно не присваивать.
? Руководство по миграции
Если заранее известно, что объекты инициализируется внешними сервисами, подавляем предупреждения анализатора с помощью null-forgiving оператора !.
Unity UI бинды:
[SerializeField] private Image _image = null!;
DI VContainer атрибуты:
namespace Sandbox.Domain { private MoveController _moveController = null!; [Inject] public void Init(MoveController moveController) { _moveController = moveController; } }
Чтобы исключить из анализа отдельную часть кода, воспользуйтесь следующей аннотацией:
#nullable disable using System; namespace Sandbox.Server.Responses { [Serializable] public class UserResponse { public int Id; public string Name; } }
? Полезные ссылки
Nullable reference types in Unity
NullReferenceException = ♥
Microsoft guide
