Что означает паттерн матчинг с is, пустыми фигурными скобками и идентификатором после них?
document.GetLanguageService<IRemoveUnnecessaryImportsService>() is { } removeUsingsService
Тот случай, когда уже перестаёшь понимать родной язык из-за частых изменений. Что тут происходит?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
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>