C# 7.0 introduit la correspondance de modèles dans deux situations : est une expression et un commutateur déclaration. Le mode
teste si une valeur a une certaine forme et peut être obtenue à partir de La valeur lorsque vous avez une forme correspondante.
La correspondance de modèles fournit une syntaxe plus claire pour les algorithmes
Vous pouvez effectuer une correspondance de modèles sur n'importe quel type de données (même le vôtre), et Si/sinon, vous avez toujours besoin de primitives correspondant.
La correspondance de modèles peut extraire des valeurs d'expressions.
Avant la correspondance de motifs -
exemplepublic 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
après la correspondance de motifs -
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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!