Menu
CoddyTech

if 与 switch 对比

本课属于 Coddy C# 学习旅程的“逻辑与流程”单元。第 10 课,共 66 课。

C# 提供了两种处理多个条件的主要方式:if-else 语句和 switch 语句。它们各自在不同场景中有优势。

if-else 语句很灵活,可以处理任何类型的条件:

string grade = "B";

if (grade == "A")
{
    Console.WriteLine("Excellent");
}
else if (grade == "B")
{
    Console.WriteLine("Good");
}
else if (grade == "C")
{
    Console.WriteLine("Satisfactory");
}
else
{
    Console.WriteLine("Needs improvement");
}

将单个变量与多个常量值进行比较时,使用 switch 语句会更简洁:

string grade = "B";

switch (grade)
{
    case "A":
        Console.WriteLine("Excellent");
        break;
    case "B":
        Console.WriteLine("Good");
        break;
    case "C":
        Console.WriteLine("Satisfactory");
        break;
    default:
        Console.WriteLine("Needs improvement");
        break;
}

Switch 可以将多个 case 组合在一起(贯穿执行),让它们共享相同的结果。将 case 标签依次排列,中间不写代码,并且只在末尾写一个 break:

string grade = "B";

switch (grade)
{
    case "A":
    case "a":
        Console.WriteLine("Excellent - 4 points");
        break;
    case "B":
    case "b":
        Console.WriteLine("Good - 3 points");
        break;
    case "C":
    case "c":
        Console.WriteLine("Satisfactory - 2 points");
        break;
    default:
        Console.WriteLine("Needs improvement");
        break;
}

这里,"B" 和 "b" 都会进入同一个代码块,并打印 "Good - 3 points"。当你希望大写和小写输入,或任意一组值,产生相同结果时,这种模式就很有用。

Switch 还可以将具有不同标签但共享同一结果的 case 分组:

char dayCode = 'M';

switch (dayCode)
{
    case 'M':
        Console.WriteLine("Monday");
        break;
    case 'T':
        Console.WriteLine("Tuesday or Thursday");
        break;
    case 'W':
        Console.WriteLine("Wednesday");
        break;
    case 'F':
        Console.WriteLine("Friday");
        break;
    default:
        Console.WriteLine("Unknown day");
        break;
}
challenge icon

挑战

中等

创建一个名为 convertGradeToPoints 的方法,它需要:

  1. 将字母成绩作为字符串参数
  2. 使用 switch 和 if-else 两种方式将其转换为数值成绩点
  3. 该方法应实现这两种方式,并返回 switch 实现的结果
  4. 使用以下成绩转换规则:
    • "A" 或 "a" = 4
    • "B" 或 "b" = 3
    • "C" 或 "c" = 2
    • "D" 或 "d" = 1
    • "F" 或 "f" = 0
    • 其他任何输入 = -1

亲手试试

public class ConvertGradeToPoints
{
    // 实现 convertGradeToPoints 方法
    public static int convertGradeToPoints(string letterGrade)
    {
        // 在这里编写你的代码
        
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C# 在线编译器