Оператор ??=
Составной оператор ??= сначала проверяет
текущее значение переменной слева. Если оно
null, выполняется присваивание из
правой части; если значение уже есть, переменная
не меняется и правая часть не вычисляется.
Удобно задавать значение по умолчанию один раз.
В примерах включён #nullable enable.
Синтаксис
переменная ??= выражение
Пример
Давайте запишем строку, пока переменная пуста:
#nullable enable
using System;
class Program
{
static void Main()
{
string? str = null;
str ??= "abcde";
Console.WriteLine(str);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте не перезаписываем уже заданное значение:
#nullable enable
using System;
class Program
{
static void Main()
{
string? str = "12345";
str ??= "abcde";
Console.WriteLine(str);
}
}
Результат выполнения кода:
"12345"
Пример
Давайте применим ??= к int?:
#nullable enable
using System;
class Program
{
static void Main()
{
int? num = null;
num ??= 12;
Console.WriteLine(num);
}
}
Результат выполнения кода:
12
Пример
Давайте дважды вызвать ??= подряд:
#nullable enable
using System;
class Program
{
static void Main()
{
string? str = null;
str ??= "abcde";
str ??= "12345";
Console.WriteLine(str);
}
}
Результат выполнения кода:
"abcde"