专业编程基础技术教程

网站首页 > 基础教程 正文

【2.C#基础】5.条件语句 条件表达式c语言

ccvgpt 2024-10-12 14:10:05 基础教程 7 ℃

5.条件语句

5.1 if 条件判断

当需要只有满足条件才去执行某段代码时,可以用 if 语句来实现。

最简单的 if 语句:

【2.C#基础】5.条件语句 条件表达式c语言

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

这是因为:




Tags:

最近发表
标签列表