РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
129 of 723 menu

Оператор ?.

Оператор ?. выполняет безопасный доступ к свойствам и методам объекта, который может иметь значение null. Если объект слева от оператора не равен null, то выполняется обычный доступ к свойству или вызов метода. Если же объект равен null, то всё выражение немедленно возвращает null, и никакие дальнейшие операции не выполняются. Это позволяет избежать ошибки NoSuchMethodError или Null check operator used on a null value.

Синтаксис

object?.property object?.method()

Пример

Давайте получим длину строки, которая может быть null, используя оператор ?.:

void main() { String? str = 'abcde'; print(str?.length); }

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

5

Пример

Теперь давайте посмотрим, что произойдёт, если строка равна null:

void main() { String? str = null; print(str?.length); }

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

null

Пример

Оператор ?. можно использовать для вызова методов объекта, который может быть null:

void main() { String? str = 'abcde'; print(str?.toUpperCase()); }

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

"ABCDE"

Пример

Если объект равен null, вызов метода через ?. также вернёт null:

void main() { String? str = null; print(str?.toUpperCase()); }

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

null

Пример

Оператор ?. можно объединять в цепочки для безопасного доступа к вложенным свойствам:

class User { String? name; } void main() { User? user = User(); user.name = 'abcde'; print(user?.name?.length); }

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

5

Пример

Если промежуточное значение в цепочке равно null, вся цепочка вернёт null:

class User { String? name; } void main() { User? user = null; print(user?.name?.length); }

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

null

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

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