Maison >développement back-end >Tutoriel C#.Net >Qu'est-ce que la correspondance de modèles en C# 7.0 ?

Qu'est-ce que la correspondance de modèles en C# 7.0 ?

WBOY
WBOYavant
2023-09-17 12:09:031533parcourir

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

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 -

exemple
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();
   }
}

sortie

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

après la correspondance de motifs -

exemple

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();
   }
}

sortie

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Augmentation du nombre C#Article suivant:Augmentation du nombre C#