C# 7.0 दो मामलों में पैटर्न मिलान का परिचय देता है, is एक्सप्रेशन और स्विचस्टेटमेंट।
पैटर्न परीक्षण करते हैं कि किसी मान का एक निश्चित आकार होता है, और जब उसका मिलान आकार होता है तो वह मान से जानकारी निकाल सकता है।
पैटर्न मिलान एल्गोरिदम के लिए अधिक संक्षिप्त सिंटैक्स प्रदान करता है
आप किसी भी डेटा प्रकार पर पैटर्न मिलान कर सकते हैं, यहां तक कि अपना भी, जबकि अगर/अन्य के साथ, आपको मिलान करने के लिए हमेशा प्राइमेटिव की आवश्यकता होती है।
पैटर्न मिलान आपके एक्सप्रेशन से मान निकाल सकता है।
पैटर्न मिलान से पहले -
उदाहरण
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