TGViewer
IRON PROGRAMMER IRON PROGRAMMER @csharp_publics · 3.04K subscribers
Post #2341 984
Присваивание объединения со значением 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#, чтобы нам с вами легче было писать читаемый и чистый код☺️

Как вам? Знали про такую фичу?

❤️ — если знали о такой фиче
👀 — если узнали о нем впервые

#полезные_материалы #эволюция_языка
  • 👀 19
  • ❤ 11
  • 👍 7
  • 🤯 1
  • 😱 1
More from @csharp_publics
  1. Oct 17, 2026Post #3177
  2. Oct 16, 2026Не зря полтора дня угробил на это 🥹 Если не прочитали, очень советую. Я привел примеры из…
  3. Oct 15, 2026Как менялся pattern matching в C#. Пять версий на примерах Прошел все версии от C# 7 до C#…
  4. Oct 15, 2026Post #3174
  5. Oct 13, 2026Как восстановить доступ к курса пока Stepik недоступен🙏 Stepik сейчас недоступен, но твоё…
  6. Oct 13, 2026Stepik недоступен уже 4 дня Причина: многие сервисы, включая наши, хостятся на серверах Ян…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →