C#学习笔记2:if-else,if-else if-else,switch

-呈阶梯状分布- 74 次阅读 986 字 发布于 2026-07-13 最后更新于 2026-07-16 C#学习笔记


if-else结构

开始之前,先看一段代码:

string user_input = Console.ReadLine();
if(user_input == "1234567")
{
    Console.WriteLine("密码正确");
}
else
{
    Console.WriteLine("错误");
}

这段代码的作用是检查用户输入是否为"1234567"(设定的密码),在这段代码中,你可以看出C#选择结构的语法特征

if (条件)
{
    代码块...
}
else
{
    代码块...
}

显而易见,条件满足时执行if大括号下的代码块,不满足时执行else大括号下的代码块。

大括号的位置不定,"{"可以在if (条件)的后面。也可以在下一行独占一行,为了统一书写,本专栏内均使用独占一行,"}"符号同理。

代码块的缩进不是Python那样的必选项,但为了美观,建议进行缩进。

if-else if-else结构

我们修改上面的示例代码逻辑,添加一条检测到密码为00000000,则输出"管理员模式已开启"。

string user_input = Console.ReadLine();
if (user_input == "1234567")
{
    Console.WriteLine("密码正确");
}
else if (user_input == "00000000")
{
    Console.WriteLine("管理员模式已开启")
}
else
{
    Console.WriteLine("错误");
}

这段代码同义转为Python代码如下:

user_input = input()
if user_input == "1234567":
    print("密码正确")
elif user_input == "00000000":
    print("管理员模式已开启")
else:
    print("错误")

可以看出,else if即当if条件不满足时,会先检查是否满足else if中的条件,如果满足,执行else if下的代码,否则执行else下的代码。

当然,我们也可以将else if嵌套,叠上多层

int score = Convert.ToInt32(Console.ReadLine());
if (score == 100) 
{
    Console.WriteLine("满分");
}
else if (score >= 80)
{
    Console.WriteLine("优秀");
}
else if (score >= 60)
{
    Console.WriteLine("及格");
}
else
{
    Console.WriteLine("不及格");
}

逻辑为(如果==100输出满分)(否则如果>=80输出优秀)(否则如果>=60输出及格)(否则输出不及格)

可以看出,当if不满足时,会一层一层地向下检查条件,直到所有条件全部不满足,才会执行else。一旦上面的任何一条条件满足,都不会继续向下检查条件,而是直接执行代码块并退出整个选择结构。

switch结构

先来看一个按照数字选择商品的程序:

int water_number = Convert.ToInt32(Console.ReadLine());
if (water_number == 0)
{
    Console.WriteLine("可乐");
}
else if (water_number == 1)
{
    Console.WriteLine("清新口味凝胶");
}
else if (water_number == 2)
{
    Console.WriteLine("能量凝胶");
}
else if (water_number == 3)
{
    Console.WriteLine("蛋白粉");
}
else if (water_number == 4)
{
    Console.WriteLine("精致的粽子");
}
else
{
    Console.WriteLine("暂未上架该商品");
}

可以看出,程序的逻辑是根据输入值的不同输出不同的商品名称,但是这样太麻烦了,有没有什么更好的选择结构呢?

看下面代码:

int water_number = Convert.ToInt32(Console.ReadLine());
switch (water_number)
{
    case 0:
        Console.WriteLine("可乐");
        break;
    case 1:
        Console.WriteLine("清新口味凝胶");
        break;
    case 2:
        Console.WriteLine("能量凝胶");
        break;
    case 3:
        Console.WriteLine("蛋白粉");
        break;
    case 4:
        Console.WriteLine("精致的粽子");
        break;
    default:
        Console.WriteLine("暂未上架该商品");
        break;
}

两段代码作用相同,我们可以从中看出switch的基本结构:

switch (被比较值)
{
    case 比较值1:
        代码块...(当被比较值==比较值1时执行)
        break;
    case 比较值2:
        代码块...(当被比较值==比较值2时执行)
        break;
    case 比较值3:(当被比较值==比较值3时执行)
        代码块...
        break;
    case ...:
        代码块...(...)
        break;
    default:
        代码块...(当上面条件都不满足时执行)
        break;
}

我们也可以让多个比较值拥有同一个代码块,也就是被比较值等于多个值时,都执行相同的代码:

int input_number = Convert.ToInt32(Console.ReadLine());
switch (input_number)
{
    case 1:
    case 3:
    case 5:
    case 7:
        Console.WriteLine("单数日");
        break;
    case 2:
    case 4:
    case 6:
        Console.WriteLine("双数日");
        break;
    default:
        Console.WriteLine("没有该日期");
        break;
}

switch在一些简单判断中运用,可以获得比if-else结构更短的运行时间。

就是这样啦!下篇写循环结构~