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
Libérer: 2023-09-17 12:09:03
avant
1512 Les gens l'ont consulté

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();
   }
}
Copier après la connexion

sortie

Area of Rect 402.59999999999997
Area of Rect 536.8
Area of Circle 452.44799423217773
Copier après la connexion
Copier après la connexion

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();
   }
}
Copier après la connexion

sortie

Area of Rect 402.59999999999997
Area of Rect 536.8
Area of Circle 452.44799423217773
Copier après la connexion
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal