static void PropertyPatternDemo()
{
string url = "https://devblogs.microsoft.com/dotnet/do-more-with-patterns-in-c-8-0/";
bool result = ShouldAllow(new Uri(url));
Console.WriteLine(result);
}
static bool ShouldAllow(Uri uri) => uri switch
{
{ Scheme: "http", Port: 80,Host:var host} => host.Length<1000,
{ Scheme: "https", Port: 443 } => true,
{ Scheme: "ftp", Port: 21 } => true,
{ IsLoopback: true } => true,
_ => false
};
enum Seasons { Spring,Summer,Fall,Winter};
static void EnumPatternDemo()
{
int tp = AverageTemp(Seasons.Spring, false);
Console.WriteLine(tp);
}
static int AverageTemp(Seasons sea, bool dayTime) => (sea, dayTime) switch
{
(Seasons.Spring, true) => 20,
(Seasons.Spring, false) => 16,
(Seasons.Summer, true) => 27,
(Seasons.Summer, false) => 22,
(Seasons.Fall, true) => 18,
(Seasons.Fall, false) => 12,
(Seasons.Winter, true) => 10,
(Seasons.Winter, false) => -2,
_ => throw new Exception("Unexpected combination")
};