首頁  >  文章  >  後端開發  >  C# 7.0 中的模式匹配是什麼?

C# 7.0 中的模式匹配是什麼?

WBOY
WBOY轉載
2023-09-17 12:09:031475瀏覽

C# 7.0 中的模式匹配是什么?

C# 7.0 在兩種情況下引入了模式匹配:is 表達式和 switch 聲明。

模式測試一個值是否具有一定的形狀,並且可以從 具有匹配形狀時的值。

模式匹配為演算法提供了更簡潔的語法

您可以對任何資料類型(甚至是您自己的資料類型)執行模式匹配,而 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
#

以上是C# 7.0 中的模式匹配是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除
上一篇:C# 數位提升下一篇:C# 數位提升