Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
60 of 1492 menu
◀ ▶

Оператор ?.

Оператор ?. ставят между выражением и именем члена или методом. Если слева null, цепочка не выполняется и результат всей операции - null. Для string? выражение str?.Length имеет тип int?, потому что длина может отсутствовать. В коде ниже включён #nullable enable.

Синтаксис

выражение?.член выражение?.Метод()

Пример

Давайте прочитаем Length у непустой строки:

#nullable enable using System; class Program { static void Main() { string? str = "abcde"; int? len = str?.Length; Console.WriteLine(len); } }

Результат выполнения кода:

5

Пример

Давайте обратимся к Length, когда строка null:

#nullable enable using System; class Program { static void Main() { string? str = null; int? len = str?.Length; Console.WriteLine(len is null); } }

Результат выполнения кода:

True

Пример

Давайте вызовем ToUpper через ?. и подставим запасное через ??:

#nullable enable using System; class Program { static void Main() { string? str = null; string res = str?.ToUpper() ?? "abcde"; Console.WriteLine(res); } }

Результат выполнения кода:

"abcde"

Пример

Давайте построим цепочку из нескольких ?.:

#nullable enable using System; class Program { static void Main() { string? str = "abcde"; int? len = str?.Trim()?.Length; Console.WriteLine(len); } }

Результат выполнения кода:

5

Смотрите также

  • оператор ??,
    который задаёт значение при null
  • оператор ??=,
    который заполняет переменную, если она пуста
  • оператор !,
    который отключает предупреждение о null
  • запись T?,
    которая помечает тип как nullable
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить