原文: https://www.programiz.com/csharp-programming/switch-statement

在本文中,我们将学习 C# 中的switch语句以及如何在示例中使用它们。

switch语句可用于替换 C# 中的if...else if语句。 使用switch语句的好处是,使用switch看起来代码更清晰易读。

switch语句的语法为:

  1. switch (variable/expression)
  2. {
  3. case value1:
  4. // Statements executed if expression(or variable) = value1
  5. break;
  6. case value2:
  7. // Statements executed if expression(or variable) = value1
  8. break;
  9. ... ... ...
  10. ... ... ...
  11. default:
  12. // Statements executed if no case matches
  13. }

switch语句求值expression(或variable),并将其值与每种情况下的值(或表达式)(value1value2,…)。 当找到匹配值时,将执行该情况下的语句。

但是,如果以上情况均不匹配表达式,则将执行default块中的语句。switch末尾的默认语句与if else语句中的else块相似。

但是switch语句的问题是,当找到匹配值时,它将执行之后的所有语句,直到switch块结束。

为了避免这种情况,我们在每种情况下使用break语句。break语句通过终止switch语句的执行来阻止程序执行不匹配的语句。

要了解有关break语句的更多信息,请访问 C# break语句


示例 1:C# switch语句

  1. using System;
  2. namespace Conditional
  3. {
  4. class SwitchCase
  5. {
  6. public static void Main(string[] args)
  7. {
  8. char ch;
  9. Console.WriteLine("Enter an alphabet");
  10. ch = Convert.ToChar(Console.ReadLine());
  11. switch(Char.ToLower(ch))
  12. {
  13. case 'a':
  14. Console.WriteLine("Vowel");
  15. break;
  16. case 'e':
  17. Console.WriteLine("Vowel");
  18. break;
  19. case 'i':
  20. Console.WriteLine("Vowel");
  21. break;
  22. case 'o':
  23. Console.WriteLine("Vowel");
  24. break;
  25. case 'u':
  26. Console.WriteLine("Vowel");
  27. break;
  28. default:
  29. Console.WriteLine("Not a vowel");
  30. break;
  31. }
  32. }
  33. }
  34. }

当我们运行程序时,输出将是:

  1. Enter an alphabet
  2. X
  3. Not a vowel

在此示例中,提示用户输入字母。 如果字母为大写,则使用ToLower()方法将其转换为小写。

然后,switch语句检查用户输入的字母是否为a, e, i, o or u中的任何一个。

如果其中一种情况匹配,则打印Vowel,否则控制转到默认块,并且将Not a vowel打印为输出。

由于所有元音的输出都相同,因此我们可以将案例合并为:


示例 2:带有分组case的 C# switch语句

  1. using System;
  2. namespace Conditional
  3. {
  4. class SwitchCase
  5. {
  6. public static void Main(string[] args)
  7. {
  8. char ch;
  9. Console.WriteLine("Enter an alphabet");
  10. ch = Convert.ToChar(Console.ReadLine());
  11. switch(Char.ToLower(ch))
  12. {
  13. case 'a':
  14. case 'e':
  15. case 'i':
  16. case 'o':
  17. case 'u':
  18. Console.WriteLine("Vowel");
  19. break;
  20. default:
  21. Console.WriteLine("Not a vowel");
  22. break;
  23. }
  24. }
  25. }
  26. }

两个程序的输出是相同的。 在上面的程序中,所有元音都打印输出Vowel,并从switch语句中断。

尽管switch语句使代码看起来比if...else if语句更干净,但是switch仅限于有限的数据类型。 C# 中的switch语句仅适用于:

  • 基本数据类型:布尔型,字符型和整数型
  • 枚举类型(枚举)
  • 字符串类
  • 以上数据类型的可空类型

示例 3:使用 C# switch的简单计算器程序

  1. using System;
  2. namespace Conditional
  3. {
  4. class SwitchCase
  5. {
  6. public static void Main(string[] args)
  7. {
  8. char op;
  9. double first, second, result;
  10. Console.Write("Enter first number: ");
  11. first = Convert.ToDouble(Console.ReadLine());
  12. Console.Write("Enter second number: ");
  13. second = Convert.ToDouble(Console.ReadLine());
  14. Console.Write("Enter operator (+, -, *, /): ");
  15. op = (char)Console.Read();
  16. switch(op)
  17. {
  18. case '+':
  19. result = first + second;
  20. Console.WriteLine("{0} + {1} = {2}", first, second, result);
  21. break;
  22. case '-':
  23. result = first - second;
  24. Console.WriteLine("{0} - {1} = {2}", first, second, result);
  25. break;
  26. case '*':
  27. result = first * second;
  28. Console.WriteLine("{0} * {1} = {2}", first, second, result);
  29. break;
  30. case '/':
  31. result = first / second;
  32. Console.WriteLine("{0} / {1} = {2}", first, second, result);
  33. break;
  34. default:
  35. Console.WriteLine("Invalid Operator");
  36. break;
  37. }
  38. }
  39. }
  40. }

当我们运行程序时,输出将是:

  1. Enter first number: -13.11
  2. Enter second number: 2.41
  3. Enter operator (+, -, *, /): *
  4. -13.11 * 2.41 = -31.5951

上面的程序将两个操作数和一个运算符作为用户的输入,并基于该运算符执行操作。

使用ReadLine()Read()方法从用户那里获取输入。 要了解更多信息,请访问 C# 基本输入和输出

该程序使用switch case语句进行决策。 另外,我们可以使用if-else if梯形图执行相同的操作。