C# Switch模式匹配语法
2021/5/1 12:56:45
本文主要是介绍C# Switch模式匹配语法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
创建3个类
1 class Circle 2 { 3 private double _radius; 4 5 public Circle(double radius) => _radius = radius; 6 7 8 public double ComputerArea1() 9 { 10 return _radius * _radius * Math.PI; 11 } 12 } 13 14 15 class Rectangle 16 { 17 18 private double _width; 19 20 private double _height; 21 22 public Rectangle(double width, double height) 23 { 24 _width = width; 25 _height = height; 26 } 27 28 public double ComputerArea2() 29 { 30 return _width * _height; 31 } 32 } 33 34 35 class Triangle 36 { 37 38 private double _bottom; 39 40 private double _height; 41 42 public Triangle(double bottom, double height) 43 { 44 _bottom = bottom; 45 _height = height; 46 } 47 48 public double ComputerArea3() 49 { 50 return _bottom * _height / 2; 51 } 52 }
创建 计算类 常规写法
1 class Calculate 2 { 3 public void Calc(object obj) 4 { 5 //常规写法 6 if (obj is Circle c) 7 { 8 9 Console.WriteLine($"{c.GetType().Name}的面积:{c.ComputerArea1()}"); 10 } 11 else if (obj is Rectangle r) 12 { 13 Console.WriteLine($"{r.GetType().Name}的面积:{r.ComputerArea2()}"); 14 15 } 16 else if (obj is Triangle t) 17 { 18 Console.WriteLine($"{t.GetType().Name}的面积:{t.ComputerArea3()}"); 19 } 20 else 21 { 22 Console.WriteLine("没定义的图形"); 23 } 24 } 25 }
运行测试
1 static void Main(string[] args) 2 { 3 var circle = new Circle(5); 4 var rect = new Rectangle(5, 10); 5 var triangle = new Triangle(6, 8); 6 7 var calc = new Calculate(); 8 9 calc.Calc(circle); 10 calc.Calc(rect); 11 calc.Calc(triangle); 12 13 }
运行结果
更改计算类的写法
1 public void Calc(object obj) 2 { 3 4 #region 常规写法 5 //if (obj is Circle c) 6 //{ 7 8 // Console.WriteLine($"{c.GetType().Name}的面积:{c.ComputerArea1()}"); 9 //} 10 //else if (obj is Rectangle r) 11 //{ 12 // Console.WriteLine($"{r.GetType().Name}的面积:{r.ComputerArea2()}"); 13 14 //} 15 //else if (obj is Triangle t) 16 //{ 17 // Console.WriteLine($"{t.GetType().Name}的面积:{t.ComputerArea3()}"); 18 //} 19 //else 20 //{ 21 // Console.WriteLine("没定义的图形"); 22 //} 23 #endregion 24 #region 模式匹配写法 25 switch (obj) 26 { 27 case Circle c: 28 Console.WriteLine($"{c.GetType().Name}的面积:{c.ComputerArea1()}"); 29 break; 30 case Rectangle r: 31 Console.WriteLine($"{r.GetType().Name}的面积:{r.ComputerArea2()}"); 32 break; 33 case Triangle t: 34 Console.WriteLine($"{t.GetType().Name}的面积:{t.ComputerArea3()}"); 35 break; 36 default: 37 break; 38 } 39 40 #endregion 41 }
运行结果
这篇关于C# Switch模式匹配语法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具