Last Updated on 13. September 2021 by Thomas J. Fehr
Relational Patterns
Ab C# 9 können Werte mit Relational Patterns geprüft werden:
< | kleiner als |
> | grösser als |
<= | kleiner oder gleich |
>= | grösser oder gleich |
Dazu nun ein Code Beispiel:
using System;
namespace ConsoleApp2
{
class Program
{
public class Animal
{
public string Name { get; set; }
public int Weight { get; set; }
public int YearOfBirth { get; set; }
}
static void Main(string[] args)
{
var animal = new Animal()
{
Name = "Tiger"
,Weight = 300
,YearOfBirth = 2016
};
if (animal is Animal { Weight: > 200 } animalWeightMoreThen200)
{
Console.WriteLine($"Animal is more then 200kg! " +
$"Weight: {animalWeightMoreThen200.Weight}kg");
}
}
}
}
Wir haben ein Objekt Animal. Bevor wir mit diesem Objekt arbeiten, prüfen wir, ob es vom Typ Animal ist. Mit einem “Relational Pattern” können wir nun auch sicherstellen, dass unser Tier mehr als 200 kg wiegt, bevor wir damit arbeiten.
Pattern Combinators
Seit C# 9 haben wir nun auch die Möglichkeit mehrere Patterns zu kombinieren. Dazu haben wir folgende Möglichkeiten:
and | und |
or | oder |
not | nicht |
Dazu nun ein Code Beispiel:
using System;
namespace ConsoleApp2
{
class Program
{
public class Animal
{
public string Name { get; set; }
public int Weight { get; set; }
public int YearOfBirth { get; set; }
}
static void Main(string[] args)
{
var animal = new Animal()
{
Name = "Tiger"
, Weight = 299
, YearOfBirth = 2016
};
if (animal is Animal { Weight: > 200 and < 300,
Name: "Tiger" } tigerWeightBetween200And300)
{
Console.WriteLine($"The tiger weight is between 200kg and 300kg! " +
$"Weight: {tigerWeightBetween200And300.Weight}kg");
}
}
}
}
Wir haben ein Objekt Animal. Bevor wir mit diesem Objekt arbeiten, prüfen wir, ob es vom Typ Animal ist. Mit den kombinierten “Relational Patterns” können wir nun auch sicherstellen, dass unser Tier mehr als 200 kg und weniger als 300 kg wiegt und der Name Tiger ist, bevor wir damit arbeiten.