C# 7.0 führt den Mustervergleich in zwei Situationen ein: Ausdruck und Wechsel
Stellungnahme. Der
-Modus testet, ob ein Wert eine bestimmte Form hat und daraus ermittelt werden kann
Der Wert bei passender Form.
Der Mustervergleich bietet eine sauberere Syntax für Algorithmen.
Sie können den Mustervergleich für jeden Datentyp (sogar Ihren eigenen Datentyp) durchführen
Wenn/sonst, benötigen Sie immer passende Grundelemente.
Der Mustervergleich kann Werte aus Ausdrücken extrahieren.
Vor dem Mustervergleich -
Beispiel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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();
}
}
|
Nach dem Login kopieren
Ausgabe
1 2 3 | Area of Rect 402.59999999999997
Area of Rect 536.8
Area of Circle 452.44799423217773
|
Nach dem Login kopieren
Nach dem Login kopieren
nach dem Mustervergleich -
Beispiel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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();
}
}
|
Nach dem Login kopieren
Ausgabe
1 2 3 | Area of Rect 402.59999999999997
Area of Rect 536.8
Area of Circle 452.44799423217773
|
Nach dem Login kopieren
Nach dem Login kopieren
Das obige ist der detaillierte Inhalt vonWas ist Mustervergleich in C# 7.0?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!