C# - паттерны операторов is/switch/switch expression
- Алик Ким
- 17 авг. 2023 г.
- 1 мин. чтения
Мне, прям, стыдно выкладывать такую шпаргалку-самоделку. но мало ли, вдруг кому пригодится.
для всех этих операторов одинаково паттерны поддерживаются
паттерны рекурсивны
какие есть интересные:
if (a is string { Length: >= 5 } s) {...}
if (point is (>= 0, >= 0) { Weight: >= 0.0 })
//при этом у класса point должен быть метод Deconstruct, который возвращает для этого объекта тьюпл с тем же количеством элементов
input is not (float or double)
int[] numbers = { 1, 2, 3 };
Console.WriteLine(numbers is [0 or 1, <= 2, >= 3]); // True
Console.WriteLine(new[] { 1, 0, 0, 1 } is [1, 0, .., 0, 1]); // True
numbers is [< 0, .. { Length: 2 or 4 }, > 0]
obj is {Prop1 = 22 } - что, если тут obj - null?
вернется false
Comentários