可以使用switch语句替换C#中的if … else if语句。使用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语句评估表达式 (或变量 ),并将其值与每种情况( 值1 , 值2 ,…)的值(或表达式)进行比较。当找到匹配值时,将执行该情况下的语句。
但是,如果以上情况均不与表达式匹配,则将执行default
块内的语句。 switch末尾的默认语句类似于if else语句中的else块。
但是switch语句的问题是,当找到匹配值时,它将执行之后的所有语句,直到switch块结束。
为了避免这种情况,我们在每种情况下使用break
语句。 break语句通过终止switch语句的执行来阻止程序执行不匹配的语句。
要了解有关break语句的更多信息,请访问C#break statement 。
示例1:C#开关语句
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
任何a, e, i, o or u
。
如果其中一种情况匹配,则输出Vowel
,否则控制转到默认块,并且Not a vowel
输出Not a vowel
。
由于所有元音的输出都相同,因此我们可以将案例合并为:
示例2:带有分组案例的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#开关语句的简单计算器程序
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梯形图执行相同的操作。