控制语句

switch

预计阅读时间2 分钟 4 views

switch 语句可以用来替代 C# 中的 if...else if 语句。相比于 if...else ifswitch 语句的代码看起来更简洁、更易读。

switch 语句的语法

switch (变量/表达式)
{
    case 值1:
        // 当表达式(或变量)等于值1时执行的语句
        break;
    case 值2:
        // 当表达式(或变量)等于值2时执行的语句
        break;
    ... 
    default:
        // 当没有匹配的case时执行的语句
        break;
}

switch 语句中,表达式的值会依次与每个 case 的值进行比较,当找到匹配的值时,会执行该 case 下的语句。如果没有任何匹配的 case,则执行 default 块的语句,这类似于 if...else 语句中的 else

break 语句的重要性

在每个 case 块的末尾通常会有一个 break 语句,它可以防止程序继续执行其他不匹配的 case。没有 break 的情况下,程序会继续执行后续的所有 case,直到遇到 breakswitch 块的结束。


示例 1: 基本的 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

在这个程序中,用户被提示输入一个字母。字母将被转换为小写,然后 switch 语句判断这个字母是否是元音(a, e, i, o, u)。如果匹配到元音,则打印“Vowel”;如果没有匹配,则执行 default 块,打印“Not a vowel”。


示例 2: 合并 case 语句

在上一示例中,所有元音的输出都是相同的,因此我们可以将 case 语句合并:

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;
            }
        }
    }
}

在这个版本中,程序的输出与之前相同,但代码更加简洁。所有元音的 case 被合并到了一起,只需要写一个输出。


switch 支持的数据类型

switch 语句在 C# 中可以用于以下几种数据类型:

  1. 原始数据类型:boolchar 和整型
  2. 枚举类型 (enum)
  3. string 类型
  4. 上述数据类型的可空类型 (nullable)

示例 3: 使用 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

在这个程序中,用户输入两个数字和一个运算符,程序根据运算符执行相应的运算(加、减、乘、除)。使用 switch 语句可以轻松实现基于运算符的条件判断。


总结

  • switch 语句是一种更简洁的方式,替代复杂的 if...else if 结构。
  • 它的使用主要基于数据类型的有限性,适用于 char、整型、enumstring 类型等。
  • switch 语句通过 casedefault 实现多路径选择,利用 break 语句避免执行非匹配的代码。

Leave a Comment

分享此文档

switch

或复制链接

内容