C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#7.0のパターンマッチングとは何ですか?


C#7.0では、is式とswitchstatementの2つのケースでパターンマッチングが導入されています。

パターンは、値が特定の形状を持っていることをテストし、一致する形状を持っている場合、値から情報を抽出できます。

パターンマッチングは、アルゴリズムのより簡潔な構文を提供します

独自のデータ型を含め、任意のデータ型でパターンマッチングを実行できますが、if / elseの場合は、常にプリミティブを一致させる必要があります。

パターンマッチングにより、式から値を抽出できます。

パターンマッチングの前

public class PI{
   public const float Pi = 3.142f;
}
public class Rectangle : PI{
   public double Width { get; set; }
   public double height { get; set; }
}
public class Circle : PI{
   public double Radius { get; set; }
}
class Program{
   public static void PrintArea(PI pi){
      if (pi is Rectangle){
         Rectangle rectangle = pi as Rectangle;
         System.Console.WriteLine("Area of Rect {0}", rectangle.Width * rectangle.height);
      }
      else if (pi is Circle){
         Circle c = pi as Circle;
         System.Console.WriteLine("Area of Circle {0}", Circle.Pi * c.Radius * c.Radius);
      }
   }
   public static void Main(){
      Rectangle r1 = new Rectangle { Width = 12.2, height = 33 };
      Rectangle r2 = new Rectangle { Width = 12.2, height = 44 };
      Circle c1 = new Circle { Radius = 12 };
      PrintArea(r1);
      PrintArea(r2);
      PrintArea(c1);
      Console.ReadLine();
   }
}

出力

Area of Rect 402.59999999999997
Area of Rect 536.8
Area of Circle 452.44799423217773

パターンマッチング後

public class PI{
   public const float Pi = 3.142f;
}
public class Rectangle : PI{
   public double Width { get; set; }
   public double height { get; set; }
}
public class Circle : PI{
   public double Radius { get; set; }
}
class Program{
   public static void PrintArea(PI pi){
      if (pi is Rectangle rectangle){
         System.Console.WriteLine("Area of Rect {0}", rectangle.Width *
         rectangle.height);
      }
      else if (pi is Circle c){
         System.Console.WriteLine("Area of Circle {0}", Circle.Pi * c.Radius *
         c.Radius);
      }
   }
   public static void Main(){
      Rectangle r1 = new Rectangle { Width = 12.2, height = 33 };
      Rectangle r2 = new Rectangle { Width = 12.2, height = 44 };
      Circle c1 = new Circle { Radius = 12 };
      PrintArea(r1);
      PrintArea(r2);
      PrintArea(c1);
      Console.ReadLine();
   }
}

出力

Area of Rect 402.59999999999997
Area of Rect 536.8
Area of Circle 452.44799423217773

  1. IPアドレスとは何ですか?

    インターネットプロトコルアドレスの略であるIPアドレスは、ネットワークに接続されているネットワークハードウェアの識別番号です。 IPアドレスを持っていると、デバイスはインターネットなどのIPベースのネットワークを介して他のデバイスと通信できます。 IPアドレスはどのように見えますか? ほとんどのIPアドレスは次のようになります: 151.101.65.121 遭遇する可能性のある他のIPアドレスは、次のようになります。 2001:4860:4860::8844 IPアドレスは何に使用されますか? IPアドレスは、インターネット上のネットワークデバイスにIDを提供します。特

  2. Windows 11 SE とは何ですか?

    Chromebook と Chrome オペレーティング システムが教育市場をほぼ独占してきましたが、Microsoft はかなり長い間、競争の場に参入して平準化しようと試みてきました。 Windows 11 SE では、まさにそれを達成しようとしています。このオペレーティング システムは、K-8 クラスルームで作成されました 念頭に置いて。使いやすく、安全性が高く、機能が制限された低コストのコンピューターにより適していると考えられています。この新しい OS の開発中、Microsoft は教育者、学校の IT 担当者、および管理者と協力しました。 Windows 11 SE 用に特別に作成さ