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