Паттерн var
Запись obj is var name - это шаблон,
а не объявление локальной переменной ключевым
словом var.
Паттерн всегда даёт true и кладёт
результат выражения слева в name.
Его используют с is
и в switch.
Синтаксис
значение is var имя
case var имя:
Пример
Давайте сохранить любое значение в переменную
через is var val:
using System;
class Program
{
static void Main()
{
object obj = "abcde";
if (obj is var val)
{
Console.WriteLine(val);
}
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте убедиться, что проверка всегда успешна для числа:
using System;
class Program
{
static void Main()
{
int num = 3;
bool res = num is var n;
Console.WriteLine(res);
Console.WriteLine(n);
}
}
Результат выполнения кода:
True
3
Пример
Давайте взять значение в switch
через case var x:
using System;
class Program
{
static void Main()
{
object obj = 4;
switch (obj)
{
case var x:
Console.WriteLine(x);
break;
}
}
}
Результат выполнения кода:
4
Пример
Давайте совместить паттерн var
с проверкой типа в одном is:
using System;
class Program
{
static void Main()
{
object obj = "12345";
if (obj is string { Length: var len })
{
Console.WriteLine(len);
}
}
}
Результат выполнения кода:
5
Смотрите также
-
паттерн
отбрасывания,
который совпадает без имени переменной -
паттерн
свойства,
гдеvarчасто задают у поля -
ключевое слово
var,
которое выводит тип при объявлении -
паттерн
типа,
который связывает имя с конкретным типом