Паттерн типа
Паттерн типа задают после оператора
is или в метке
case оператора
switch.
Запись значение is string str проверяет тип
и при совпадении кладёт значение в str
уже как string, без отдельного приведения.
Синтаксис
значение is тип имя
case тип имя:
Пример
Давайте проверим тип через is string str
и выведем длину строки:
using System;
class Program
{
static void Main()
{
object obj = "abcde";
if (obj is string str)
{
Console.WriteLine(str.Length);
}
}
}
Результат выполнения кода:
5
Пример
Давайте получим false, если тип не совпал,
и переменная не появится в ветке:
using System;
class Program
{
static void Main()
{
object obj = 5;
bool res = obj is string str;
Console.WriteLine(res);
}
}
Результат выполнения кода:
False
Пример
Давайте выберем ветку в switch по типу
значения:
using System;
class Program
{
static void Main()
{
object obj = "12345";
switch (obj)
{
case string str:
Console.WriteLine(str);
break;
default:
Console.WriteLine("other");
break;
}
}
}
Результат выполнения кода:
"12345"
Пример
Давайте сузить тип числа до int
в условии:
using System;
class Program
{
static void Main()
{
object obj = 3;
if (obj is int num)
{
Console.WriteLine(num + 2);
}
}
}
Результат выполнения кода:
5