is { }
это Property Matching (сопоставление свойств) без указания свойства, является эквивалентом is not null
.
Например, у меня есть список List<T>
, и я хочу чтобы выполнилось условие, если он не null
и сожержит больше 0 элементов.
Раньше я бы написал так.
if (list != null && list.Count > 0) { }
Ну или так
if (list?.Count > 0) { }
А теперь это можно сделать так
if (list is { Count: > 0 }) { }
А если меня не интересует количество элементов в списке, то получится вот так
if (list is { }) { }
Документация
Ну и как в любом сопоставлении с is
можно результат матчинга привести к целевому типу шаблона написав имя переменной после шаблона.
Общий вид синтаксиса будет выглядеть так
obj is <type>
{
<property_name>: <condition> <constant>,
<property_name>: <condition> <constant>
}
<assignment_variable>