quot;It's an object: {o}"); break; } ``` ```csharp object x = 42; if (x is var i) { Console.WriteLine(quot;It's an object: {i}"); } ``` <br> Это особенно полезно, когда вам нужно обработать все значения, независимо от их типа или значения, и при этом вам нужно использовать это значение внутри case. В отличие от default, var позволяет вам присвоить совпадающее значение переменной. Например: ```csharp object value = /* Полученное значение */; switch (value) { case int i: // Type Pattern Console.WriteLine(quot;It's an integer: {i}"); break; case string s: // Type Pattern Console.WriteLine(quot;It's a string: {s}"); break; case var other: // Var Pattern Console.WriteLine(quot;It's something else: {other}"); break; } ``` Этот шаблон имеет смысл использовать в последнем блоке case, так как он сопоставляется с любым значением, а оператор switch проверяет case в том порядке, в котором они указаны. Если вы поставите case var x в начало, то все остальные case не будут проверены, потому что var сопоставится с любым значением. <br> Использование в switch c When pattern: ```csharp int number = 7; switch (number) { case var num when num > 5: Console.WriteLine("Число больше 5"); break; } ``` <br> Использование в if с When pattern: ```csharp int number = 7; if (number is var num when num > 5) { Console.WriteLine("Число больше 5"); } ```