注:本章对后续的代码理解至关重要,建议仔细阅读并多加练习
本篇主要介绍 C# 中的基础语句:赋值语句、条件判断、循环、遍历、以及 switch / case 等常用结构。
具体内容以实用示例为主。
赋值语句用于将值存入变量,基本形式为 变量 = 表达式;
示例:
int a = 10; // 声明并赋初值
double b = a * 2.5; // 表达式赋值
string s = "Hello"; // 字符串赋值
// 复合赋值运算符
a += 5; // 等同于 a = a + 5;
a *= 2; // 等同于 a = a * 2;
注意:赋值表达式也有返回值(返回右侧的值),可以链式赋值:x = y = 0;
if 用于根据布尔表达式选择执行分支,常见形式包括 if、if-else、if-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# 中不能像某些语言用数字直接作为布尔值
循环语句用于重复执行。常见有 for、while、do-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);
}
这是一个后续在游戏内会经常用到语法,也是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 或先收集要删除的项再统一处理。
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 标签后共享同一代码块来实现分组。
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; // 可空类型判断
for 循环)。foreach 遍历字符串数组,找出第一个长度超过 5 的字符串并提前退出。switch 写一个方法:输入月份(1~12),返回对应季节名称。本篇覆盖了 C# 中最常用的语句结构:赋值、条件判断、三类循环、遍历以及 switch。掌握这些基本语句后,你可以更灵活地实现控制流程与数据处理逻辑。
继续练习并把示例应用到实际项目中,会更快掌握这些语法特性。