31 подписчик
Присваивание объединения со значением NULL
У нас скоро (очень скоро) выйдет курс по нововведениям языка C# – PRO C#. Эволюция языка. Хочу вас ввести в курс дела. Я считаю каждый уважающий себя C# разработчик должен знать историю развития своего главного инструмента для написания программ - язык C#.
Расскажу об одной прикольной фиче из C# 8 версии.
Начнем как всегда с проблемы😉
В реальных приложениях часто приходится работать с переменными, которые могут принимать значение null. Например, у нас может быть объект, который не инициализирован, и мы хотим присвоить ему значение по умолчанию, если он равен null. До появления C# 8, это приходилось делать с помощью условных операторов, например:
public void ProcessData(List<int> numbers)
{
if (numbers == null)
{
numbers = new List<int>();
}
// Далее работа со списком numbers
}
Метод ProcessData проверяет, равен ли список numbers null, и если да, инициализирует его новым объектом List<int>. Подобная запись может показаться громоздкой для такой элементарной операции.
Решение
В C# 8 появился оператор присваивания объединения с null (??=), который упрощает код и делает его более лаконичным. С помощью этого оператора можно выполнить ту же операцию в одну строчку:
public void ProcessData(List<int> numbers)
{
numbers ??= new List<int>();
// Далее работа со списком numbers
}
Оператор ??= проверяет, является ли переменная слева от оператора равной null, и если это так, присваивает ей значение справа от оператора. Если переменная не равна null, то присваивание не выполняется.
⚠️Внимание!
Левый операнд оператора ??= должен быть переменной, свойством или элементом индексатора.
Оператор ??= чем-то похож на оператор ??, и тем не менее отличается. Напомним, что оператор ?? используется для возврата значения левого операнда, если он не равен null, в противном случае возвращается значение правого операнда. Например:
var someString = null;
someString = someString ?? "default value";
Если someString не равен null, someString сохранит своё значение. Если someString равен null, someString получит значение default value.
Таким образом, оператор ??= делает подобную проверку компактнее, ведь при его использовании не придётся дважды писать someString:
var someString = null;
someString ??= "default value";
Вот такую приколюшку завезли в C#, чтобы нам с вами легче было писать читаемый и чистый код☺️
Как вам? Знали про такую фичу?
❤️ — если знали о такой фиче
👀 — если узнали о нем впервые
#полезные_материалы #эволюция_языка
2 минуты
16 октября