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

Оператор !

Суффикс ! ставят сразу после выражения nullable-типа. Компилятор перестаёт считать результат потенциально пустым, но в рантайме ! значение не меняет: если там всё же null, обращение к члену приведёт к NullReferenceException. Имеет смысл применять ! только когда вы уверены в наличии значения. В примерах включён #nullable enable.

Синтаксис

выражение!

Пример

Давайте выведем строку, которая задана литералом и точно не null:

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

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

"abcde"

Пример

Давайте обратимся к Length через ! у строки с известным значением:

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

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

5

Пример

Давайте вернём строку из метода и применим ! к результату:

#nullable enable using System; class Program { static string? GetStr() { return "12345"; } static void Main() { string res = GetStr()!; Console.WriteLine(res); } }

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

"12345"

Пример

Давайте сравним выражение с ! и без него при том же значении:

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

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

True

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

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