基本语句

前言

注:本章对后续的代码理解至关重要,建议仔细阅读并多加练习

本篇主要介绍 C# 中的基础语句:赋值语句、条件判断、循环、遍历、以及 switch / case 等常用结构。

具体内容以实用示例为主。


目录

  1. 赋值语句(Assignment)
  2. 条件判断语句(if / else)
  3. 循环语句(for / while / do-while)
  4. 遍历语句(foreach)[重点]
  5. switch / case 语句
  6. 其他常用语句/运算符

1. 赋值语句(Assignment)

赋值语句用于将值存入变量,基本形式为 变量 = 表达式;

示例:

int a = 10;           // 声明并赋初值
double b = a * 2.5;   // 表达式赋值
string s = "Hello"; // 字符串赋值

// 复合赋值运算符
a += 5; // 等同于 a = a + 5;
a *= 2; // 等同于 a = a * 2;

注意:赋值表达式也有返回值(返回右侧的值),可以链式赋值:x = y = 0;

2. 条件判断语句(if / else)

if 用于根据布尔表达式选择执行分支,常见形式包括 ifif-elseif-else if-...-else

示例:

int score = 78; // 假设 score(分数) 的值为 78
if (score >= 90)
{
    Console.WriteLine("优秀");
}
else if (score >= 60)
{
    Console.WriteLine("及格"); // 分数是78,在60~89之间,因此输出 "及格"
}
else
{
    Console.WriteLine("不及格");
}

// 三元运算符(简洁写法)
string result = score >= 60 ? "通过" : "未通过";

提示:条件表达式必须返回 bool。在 C# 中不能像某些语言用数字直接作为布尔值

3. 循环语句(for / while / do-while)

循环语句用于重复执行。常见有 forwhiledo-while

for 示例(典型计数循环):

for (int i = 0; i < 10; i++)
{
    Console.WriteLine(i); // 分别输出 0,1,2,3,4,5,6,7,8,9(共10个数字)
}

while 示例(先判断后执行):

int i = 0;
while (i < 5)
{
    Console.WriteLine(i); // 分别输出 0,1,2,3,4(共5个数字)
    i++;
}

do-while 示例(至少执行一次):

int j = 0;
do
{
    Console.WriteLine(j); // 分别输出 0,1,2(共3个数字),注意即使 j 初始为0,do-while 也会先执行一次循环体
    j++;
} while (j < 3);

控制流关键字:

  • break:立即退出最内层循环或 switch
  • continue:跳过本次循环剩余内容,进入下一次迭代。

示例:

for (int k = 0; k < 10; k++)
{
    if (k % 2 == 0) continue; // 跳过偶数
    if (k > 7) break;         // 超过7时退出循环
    Console.WriteLine(k);
}

4. 遍历语句(foreach)

这是一个后续在游戏内会经常用到语法,也是C#的一大特色语法:foreach —— 用于遍历集合或数组,语法简洁且安全(不可在循环内部更改集合本身)。

示例:

int[] arr = {1, 2, 3, 4};
foreach (var v in arr)
{
    Console.WriteLine(v); // 分别输出 1,2,3,4(共4个数字)
}

// 在字典上遍历
var dict = new Dictionary<string, int>() { ["a"] = 1, ["b"] = 2 };
foreach (var kv in dict)
{
    Console.WriteLine($"{kv.Key} = {kv.Value}"); // 输出 "a = 1" 和 "b = 2"
}

注意:如果需要在遍历时修改集合(添加/删除),应避免使用 foreach,改用 for 或先收集要删除的项再统一处理。

5. switch / case 语句

switch 用于基于单个表达式的多个可能值选择路径。C# 7.3 以上支持模式匹配(部分语法支持,但是游戏内是.NET Framework 4.x,暂不支持),但请注意兼容性。

基础示例:

int day = 3; // 假设 day 的值为 3
switch (day)
{
    case 1:
        Console.WriteLine("周一");
        break;
    case 2:
        Console.WriteLine("周二");
        break;
    case 3:
    case 4:
        Console.WriteLine("周三或周四"); // case 3 和 case 4 共用同一代码块,因此输出 "周三或周四"
        break;
    default:
        Console.WriteLine("其他日子");
        break;
}

模式匹配(示例,C# 7.x 支持有限的类型模式):

object obj = 123;
switch (obj)
{
    case int n:
        Console.WriteLine($"整数:{n}");
        break;
    case string t:
        Console.WriteLine($"字符串:{t}");
        break;
    default:
        Console.WriteLine("未知类型");
        break;
}

注意:每个 case 通常需要 break(或 return/throw)来防止贯穿(fall-through)。C# 不允许裸贯穿到下一个 case,但可以通过在多个 case 标签后共享同一代码块来实现分组。

6. 其他常用语句/运算符

  • return:从方法返回;
  • throw:抛出异常;
  • 空合并运算符 ??:当左侧为 null 时返回右侧,例如 var x = a ?? defaultValue;
  • 空合并赋值 ??=(C# 8.0+,使用时注意版本,游戏内暂不支持):若变量为 null 则赋值。

示例:

string name = null;
string display = name ?? "匿名"; // display = "匿名"

int? maybe = null;
if (maybe == null) return; // 可空类型判断

练习题

  1. 编写一个方法,输入一个整数数组,返回其最大值和最小值(使用 for 循环)。
  2. 使用 foreach 遍历字符串数组,找出第一个长度超过 5 的字符串并提前退出。
  3. 使用 switch 写一个方法:输入月份(1~12),返回对应季节名称。

小结

本篇覆盖了 C# 中最常用的语句结构:赋值、条件判断、三类循环、遍历以及 switch。掌握这些基本语句后,你可以更灵活地实现控制流程与数据处理逻辑。

继续练习并把示例应用到实际项目中,会更快掌握这些语法特性。