Логический паттерн
Ключевые слова and, or и not
связывают шаблоны в одном выражении
is. Например,
num is > 0 and < 10 задаёт диапазон,
а obj is not null отсекает null.
Скобки задают приоритет, как в обычных
логических выражениях.
Синтаксис
значение is шаблон1 and шаблон2
значение is not шаблон
значение is (шаблон1 or шаблон2)
Пример
Давайте проверить, лежит ли число 5
между 0 и 10:
using System;
class Program
{
static void Main()
{
int num = 5;
bool res = num is > 0 and < 10;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте отсечь null через not null:
using System;
class Program
{
static void Main()
{
string? str = "abcde";
if (str is not null)
{
Console.WriteLine(str.Length);
}
}
}
Результат выполнения кода:
5
Пример
Давайте объединить два сравнения через
or в скобках:
using System;
class Program
{
static void Main()
{
int num = 15;
bool res = num is (< 0 or > 10);
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте уточнить тип и диапазон в одном
шаблоне через and:
using System;
class Program
{
static void Main()
{
object obj = 5;
if (obj is int n and > 0 and < 10)
{
Console.WriteLine(n);
}
}
}
Результат выполнения кода:
5