网站首页 > 基础教程 正文
5.条件语句
5.1 if 条件判断
当需要只有满足条件才去执行某段代码时,可以用 if 语句来实现。
最简单的 if 语句:
if (判断条件) {
处理
}
当条件满足(也就是条件的运算结果为“真”)时,将执行 {} 内的处理;当条件不满足(也就是条件的运算结果为“假”)时,则会跳过 {} 内的处理,执行后面的代码。
if 语句中的条件表达式可以使用关系运算符,如下表所示:
假设变量 A=10 和变量 B=20,则:
运算符 | 描述 | 示例 |
== | 检查两个操作数的值是否相等,如果是的话那么条件为真 | (A == B) 结果不为 true. |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真 | (A != B) 结果为 true. |
> | 检查左边的操作数的值大于是否右操作数的值,如果是的话那么条件为真 | (A > B) 结果不为 true. |
< | 检查左边的操作数的值是否小于右操作数的值,如果是的话那么条件为真 | (A < B) 结果为 true. |
>= | 检查左边的操作数的值是否大于或等于右操作数的值,如果是的话那么条件为真 | (A >= B) 结果不为 true. |
<= | 检查左边的操作数的值是否小于或等于右操作数的值,如果是的话那么条件为真 | (A <= B) 结果为 true. |
也可以使用逻辑运算符,如下表所示:
假设变量 A 持有布尔值 true 和变量 B 持有布尔值 false,那么:
运算符 | 描述 | 示例 |
&& | 逻辑与操作。如果两个操作数为非零则条件为真 | (A && B) 结果为 false. |
|| | 逻辑或操作。如果任何两个操作数是非零则条件变为真 | (A || B) 结果为 true. |
! | 逻辑非运算符。使用反转操作数的逻辑状态。如果条件为真,那么逻辑非操作符结果为假(false) | !(A && B) 结果为 true. |
示例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Condition : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
int num = 10;
if (num >= 10)
{
Debug.Log("您已过关!");
}
}
// Update is called once per frame
void Update()
{
}
}
控制台输出:
您已过关!
UnityEngine.Debug:Log(Object)
Condition:Start() (at Assets/Condition.cs:13)
5.2 if - else 分支
当条件满足和不满足时分别执行不同的代码,可以使用 if-else,格式:
if (条件表达式) {
处理1
} else {
处理2
}
当条件表达式满足,则执行“处理1”部分的脚本,当条件表达式不满足,则执行“处理2”部分的脚本。
示例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Condition : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
int num = 7;
if (num >= 10)
{
Debug.Log("您已过关!");
}
else
{
Debug.Log("您未过关,继续努力!");
}
}
// Update is called once per frame
void Update()
{
}
}
控制台输出:
您未过关,继续努力!
UnityEngine.Debug:Log(Object)
Condition:Start() (at Assets/Condition.cs:17)
5.3 if - else if 多条件判断
当含有两个以上的条件判断时,可以使用 if-else if 结构,格式如下:
if (条件表达式1) {
处理1
} else if (条件表达式2) {
处理2
}
......
else if (条件表达式N) {
处理n
} else {
处理n+1
}
依次判断条件表达式,当满足时,执行对应的代码,后续的条件表达式及else被忽略,如果所有的条件表达式都不满足,则执行else中的代码。
示例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Condition : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
int num = 3;
if (num >= 10)
{
Debug.Log("您已过关!");
}
else if (num >= 5)
{
Debug.Log("您已过关一半以上,继续努力!");
}
else
{
Debug.Log("您过关不到一半,继续努力!");
}
}
// Update is called once per frame
void Update()
{
}
}
控制台输出:
您过关不到一半,继续努力!
UnityEngine.Debug:Log(Object)
Condition:Start() (at Assets/Condition.cs:21)
5.4 switch 语句
一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。 格式如下:
switch(表达式){
case 常量表达式1:
处理1;
break;
case 常量表达式2 :
处理2;
break;
......
default: /*可选*/
处理n;
break;
}
- switch 语句中的 表达式 必须是一个整型或者可以通过类型转换为 int 型的数!如:byte、short、char类型等。
- 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
- case 的 常量表达式 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量。当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
- 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
- 不是每一个 case 都需要包含 break。如果 case 语句为空,则可以不包含 break,控制流将会继续后续的 case,直到遇到 break 为止。
- C# 不允许从一个开关部分继续执行到下一个开关部分。如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。
- 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
示例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Condition : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
int num = 10;
switch (num) {
case 0:
case 1:
case 2:
case 3:
case 4:
Debug.Log("您过关不到一半,继续努力!");
break;
case 5:
case 6:
case 7:
case 8:
case 9:
Debug.Log("您已过关一半以上,继续努力!");
break;
default:
Debug.Log("您已过关!");
break;
}
}
// Update is called once per frame
void Update()
{
}
}
控制台输出:
您已过关!
UnityEngine.Debug:Log(Object)
Condition:Start() (at Assets/Condition.cs:27)
5.5 变量的作用域
变量只能在其声明的位置所在的 {} 内起作用。
示例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Condition : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
int x = 10;
if (x >= 10)
{
int y = 20;
Debug.Log(x);
Debug.Log(y);
}
Debug.Log(x);
Debug.Log(y);
}
// Update is called once per frame
void Update()
{
}
}
运行游戏,控制台输出报错如下:
Assets\Condition.cs(18,19): error CS0103: The name 'y' does not exist in the current context
这是因为:
- 上一篇: 学习笔记之C#基础——流程控制语句
- 下一篇: C#依赖注入 c#依赖注入教程
猜你喜欢
- 2024-10-12 340.C# 中最有价值的语法糖及其应用场景
- 2024-10-12 Dev——手把手教你学会CheckedListBox(C#)
- 2024-10-12 流程控制-循环语句(5-5)-C#编程零基础到入门学习
- 2024-10-12 C#12那些有意思的特性 c# 特性的实现原理
- 2024-10-12 C#得到网关和DNS地址 .netcore 网关
- 2024-10-12 C#设计模式之4-原型模式 c++原型模式
- 2024-10-12 C#05(判断、循环语句) c#循环次数由什么决定
- 2024-10-12 C#:编程界的全能王,其他语言只能望尘莫及?
- 2024-10-12 C# 中的模式匹配与安全的类型转换:is 和 as 运算符的深入解析
- 2024-10-12 C# 循环语句介绍 c#循环输出
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)