
C# 7.0 在两种情况下引入了模式匹配:is 表达式和 switch声明。
模式测试一个值是否具有一定的形状,并且可以从具有匹配形状时的值。
模式匹配为算法提供了更简洁的语法
您可以对任何数据类型(甚至是您自己的数据类型)执行模式匹配,而if/else,你总是需要基元来匹配。
模式匹配可以从表达式中提取值。
模式匹配之前 –
示例
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.59999999999997Area of Rect 536.8Area 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.59999999999997Area of Rect 536.8Area of Circle 452.44799423217773
以上就是C# 7.0 中的模式匹配是什么?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1435521.html
微信扫一扫
支付宝扫一扫