📜  C#开关声明

📅  最后修改于: 2020-10-06 09:38:13             🧑  作者: Mango

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

可以使用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梯形图执行相同的操作。