原文: https://www.programiz.com/csharp-programming/switch-statement
在本文中,我们将学习 C# 中的switch
语句以及如何在示例中使用它们。
switch
语句可用于替换 C# 中的if...else if
语句。 使用switch
语句的好处是,使用switch
看起来代码更清晰易读。
switch
语句的语法为:
switch (variable/expression)
{
case value1:
// Statements executed if expression(or variable) = value1
break;
case value2:
// Statements executed if expression(or variable) = value1
break;
... ... ...
... ... ...
default:
// Statements executed if no case matches
}
switch
语句求值expression
(或variable
),并将其值与每种情况下的值(或表达式)(value1
,value2
,…)。 当找到匹配值时,将执行该情况下的语句。
但是,如果以上情况均不匹配表达式,则将执行default
块中的语句。switch
末尾的默认语句与if else
语句中的else
块相似。
但是switch
语句的问题是,当找到匹配值时,它将执行之后的所有语句,直到switch
块结束。
为了避免这种情况,我们在每种情况下使用break
语句。break
语句通过终止switch
语句的执行来阻止程序执行不匹配的语句。
要了解有关break
语句的更多信息,请访问 C# break
语句。
示例 1:C# switch
语句
using System;
namespace Conditional
{
class SwitchCase
{
public static void Main(string[] args)
{
char ch;
Console.WriteLine("Enter an alphabet");
ch = Convert.ToChar(Console.ReadLine());
switch(Char.ToLower(ch))
{
case 'a':
Console.WriteLine("Vowel");
break;
case 'e':
Console.WriteLine("Vowel");
break;
case 'i':
Console.WriteLine("Vowel");
break;
case 'o':
Console.WriteLine("Vowel");
break;
case 'u':
Console.WriteLine("Vowel");
break;
default:
Console.WriteLine("Not a vowel");
break;
}
}
}
}
当我们运行程序时,输出将是:
Enter an alphabet
X
Not a vowel
在此示例中,提示用户输入字母。 如果字母为大写,则使用ToLower()
方法将其转换为小写。
然后,switch
语句检查用户输入的字母是否为a, e, i, o or u
中的任何一个。
如果其中一种情况匹配,则打印Vowel
,否则控制转到默认块,并且将Not a vowel
打印为输出。
由于所有元音的输出都相同,因此我们可以将案例合并为:
示例 2:带有分组case
的 C# switch
语句
using System;
namespace Conditional
{
class SwitchCase
{
public static void Main(string[] args)
{
char ch;
Console.WriteLine("Enter an alphabet");
ch = Convert.ToChar(Console.ReadLine());
switch(Char.ToLower(ch))
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
Console.WriteLine("Vowel");
break;
default:
Console.WriteLine("Not a vowel");
break;
}
}
}
}
两个程序的输出是相同的。 在上面的程序中,所有元音都打印输出Vowel
,并从switch
语句中断。
尽管switch
语句使代码看起来比if...else if
语句更干净,但是switch
仅限于有限的数据类型。 C# 中的switch
语句仅适用于:
- 基本数据类型:布尔型,字符型和整数型
- 枚举类型(枚举)
- 字符串类
- 以上数据类型的可空类型
示例 3:使用 C# switch
的简单计算器程序
using System;
namespace Conditional
{
class SwitchCase
{
public static void Main(string[] args)
{
char op;
double first, second, result;
Console.Write("Enter first number: ");
first = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter second number: ");
second = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter operator (+, -, *, /): ");
op = (char)Console.Read();
switch(op)
{
case '+':
result = first + second;
Console.WriteLine("{0} + {1} = {2}", first, second, result);
break;
case '-':
result = first - second;
Console.WriteLine("{0} - {1} = {2}", first, second, result);
break;
case '*':
result = first * second;
Console.WriteLine("{0} * {1} = {2}", first, second, result);
break;
case '/':
result = first / second;
Console.WriteLine("{0} / {1} = {2}", first, second, result);
break;
default:
Console.WriteLine("Invalid Operator");
break;
}
}
}
}
当我们运行程序时,输出将是:
Enter first number: -13.11
Enter second number: 2.41
Enter operator (+, -, *, /): *
-13.11 * 2.41 = -31.5951
上面的程序将两个操作数和一个运算符作为用户的输入,并基于该运算符执行操作。
使用ReadLine()
和Read()
方法从用户那里获取输入。 要了解更多信息,请访问 C# 基本输入和输出。
该程序使用switch case
语句进行决策。 另外,我们可以使用if-else if
梯形图执行相同的操作。