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后面圆括号里必须是一个逻辑表达式——结果只能是true或false。
常用比较运算符:
| 运算符 | 含义 | 例子 |
|---|---|---|
| == | 等于 | 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. 一些小细节:
大括号:要不要写?
如果if或else后面只有一条命令,可以不写大括号:
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("欢迎!");
第二行总是会执行——大括号就是用来把多条命令放进“分支”里的。
GO TO FULL VERSION