CodeGym /课程 /C# SELF /条件语句:if else

条件语句:if else

C# SELF
第 3 级 , 课程 1
可用

1. if else语句

如果程序不管外部情况怎么变都做同样的事,那就没啥用。程序得能根据不同情况做不同的事。

在C#里,这个功能是通过条件语句实现的——就是一个特殊的关键字,可以让你根据条件真假来执行不同的代码块。

条件语句有三部分:条件命令1命令2。如果条件为真,就执行命令1,否则就执行命令2。这两个命令永远不会同时执行。这个语句的通用写法如下:

if (条件)
   命令1;
else
   命令2;
条件语句 if-else

if就是“如果”,else就是“否则”。用人话可以这么写:

如果 条件 为真, 那么
   执行 命令1;
否则
   执行 命令2;
条件语句 if-else用人话

举个例子:

//屏幕上会输出:你还是个孩子

int age = 17;
if (age < 18)
   Console.WriteLine("你还是个孩子");
else
   Console.WriteLine("你已经是大人了");
//屏幕上会输出:暖和

int temperature = 5;
if (temperature < 0)
   Console.WriteLine("外面很冷");
else
   Console.WriteLine("暖和");
//屏幕上会输出:可以考驾照了

int age = 18;
if (age == 18)
   Console.WriteLine("可以考驾照了");
else
   Console.WriteLine("可以攒钱买车了");

2. 代码块

如果你想在条件成立(或不成立)时让程序执行多条命令,可以把它们放进一个代码块里。

要把命令放进一个块里,就要用大括号把它们包起来。一般写法如下:

{
   命令1;
   命令2;
   命令3;
}

块里可以有任意多条命令,甚至可以没有。

if-else语句和代码块的组合例子:

//屏幕上会输出:你还是个孩子。别跟大人顶嘴

int age = 17;
if (age < 18)
{
   Console.WriteLine("你还是个孩子");
   Console.WriteLine("别跟大人顶嘴");
}
else
{
   Console.WriteLine("你已经是大人了");
   Console.WriteLine("现在的年轻人真行");
}
//屏幕上会输出:暖和

int temperature = 5;
if (temperature < 0)
{
   Console.WriteLine("外面很冷");
   Console.WriteLine("记得戴帽子");
}
else
   Console.WriteLine("暖和");
//会执行一个空的代码块。屏幕上不会有任何输出。 

int age = 21;
if (age == 18)
   Console.WriteLine("去兵役局报到");
else
{
}

3. if语句的简写

如果else块里没代码,可以省略它。这样if语句就变成:

if (条件)
   命令1;
条件语句 if

例子:

int age = 19;
if (age >= 18)
{
    Console.WriteLine("你已经成年了!");
}

怎么回事?

如果条件为真,就执行代码块。如果为假,啥也不做——程序继续往下走。

程序里其实有个else块,但它是空的(大括号里啥也没有)。你可以直接去掉它:程序不会有任何变化。

4. 条件组合:else if

有时候你不只是想判断“是/否”,而是要从多个选项里选一个。 这时候就用else if

if (条件1)
{
    // 如果条件1为真,执行这里
}
else if (条件2)
{
    // 如果条件2为真且条件1为假,执行这里
}
else
{
    // 上面都不满足时执行这里
}

例子:

int hour = 13;
if (hour < 12)
{
    Console.WriteLine("早上好!");
}
else if (hour < 18)
{
    Console.WriteLine("下午好!");
}
else
{
    Console.WriteLine("晚上好!");
}

这里发生了什么?

  • 如果时间小于12点——早上。
  • 如果12到18点——下午。
  • 更大就是晚上。
  • 程序只会选一个分支!一旦有条件满足,后面的都不会再检查了。

5. 图示:分支流程图

流程图长这样:

如果有多个条件:

这很像桌游里的分岔路:往左走是一个,往右走是另一个,直走又是别的!

6. 可以判断哪些条件?

if后面圆括号里必须是一个逻辑表达式——结果只能是truefalse

常用比较运算符:

运算符 含义 例子
== 等于 x == 5
!= 不等于 x != 10
> 大于 x > 0
< 小于 age < 18
>= 大于等于 score >= 100
<= 小于等于 count <= 50

条件例子:

if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)

注意:=(一个等号)是赋值。==(两个等号)是比较。这是新手最容易犯的错之一!如果你不小心写成:

if (x = 5) // 错误!

——编译器会报错,这样做是对的。

7. 条件里用字符串

不仅可以比较数字,还可以比较字符串:

string password = Console.ReadLine();
if (password == "qwerty")
{
    Console.WriteLine("你登录成功了!");
}

注意:在C#里用==比较字符串一般没问题,因为它比较的是内容(不是对象引用)。关于字符串比较的细节和本地化问题,后面讲字符串方法时还会细说。

8. 一些小细节:

大括号:要不要写?

如果ifelse后面只有一条命令,可以不写大括号:

if (age > 18)
    Console.WriteLine("你超过18岁了!");

// 但更安全的写法是总写大括号:
if (age > 18)
{
    Console.WriteLine("你超过18岁了!");
}

建议:总是写大括号。这样能避免很多坑,尤其是以后代码变多的时候。

逻辑错误:小心条件!

如果你这样写:

if (age > 18)
    Console.WriteLine("你超过18岁了!");
    Console.WriteLine("欢迎!");

编译器会把它理解成:

if (age > 18)
{
    Console.WriteLine("你超过18岁了!");
}

Console.WriteLine("欢迎!");

第二行总是会执行——大括号就是用来把多条命令放进“分支”里的。

2
任务
C# SELF, 第 3 级, 课程 1
已锁定
温度分类
温度分类
2
任务
C# SELF, 第 3 级, 课程 1
已锁定
密码检查
密码检查
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION