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;
}挑战
中等创建一个名为 convertGradeToPoints 的方法,它需要:
- 将字母成绩作为字符串参数
- 使用 switch 和 if-else 两种方式将其转换为数值成绩点
- 该方法应实现这两种方式,并返回 switch 实现的结果
- 使用以下成绩转换规则:
- "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)
{
// 在这里编写你的代码
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C# 在线编译器