В C# 8.0 появился оператор присваивания с объединением нулей ?? =. Вы можете использовать оператор ?? = для присвоения значения его правого операнда его левому операнду, только если левый операнд имеет значение null. В C# 7.3 оператор объединения с нулем ?? также было несколько требований, которые теперь требуются в C # 8.0. Об этом мы тоже поговорим подробно.
Предпосылки
Чтобы использовать оператор присваивания Null-coalescing ?? =, вам необходимо настроить компьютер для запуска .NET Core, включая компилятор C # 8.0. Компилятор C # 8 доступен начиная с Visual Studio 2019 версии 16.3 или .NET Core 3.0 SDK.
Давайте начнем
Используйте объединяющий нуль оператор присваивания ?? =, чтобы присвоить значение правого операнда левому операнду, только если значение левого операнда равно нулю.
Например, в приведенном ниже коде я инициализирую список типа int с именем «numbers» нулевой ссылкой. Затем я использую оператор присваивания Null-coalescing, чтобы назначить новый List из int, если значение «numbers» равно нулю.
В предыдущих версиях C #, таких как 7.3, мы использовали другие различные методы для выполнения той же задачи, что и оператор присваивания с объединением нулей ??. Например, я использую оператор Null-coalescing, чтобы сделать то же самое, но это кажется немного дешевым.
Обновленные требования к оператору слияния нуля
В C# 7.3 и ранее тип левого операнда оператора ?? Оператор должен быть либо ссылочным типом, либо типом значения, допускающим значение NULL. Начиная с C# 8.0, это требование заменяется следующим: тип левого операнда оператора ?? Операторы и ?? = не могут быть типом значения, не допускающим значения NULL. Например:
В частности, начиная с C# 8.0, вы можете использовать операторы объединения с нулевым значением с параметрами неограниченного типа. Например, я использую оператор объединения NULL с типом, не допускающим значения NULL, и он выдает ошибку.
Итак, когда я попытался построить это. Выдает ошибку:
Ошибка CS0019 Оператор ‘??’ не может применяться к операндам типа int и int