从 C# 基础到掌握 — 第 2 集
使用条件语句、循环和方法创建流
该博客上撰写的文章是出于教学目的而创建的。 另外,文章中的信息可能不正确,请谨慎。
程序不仅仅以存储值结束。 您需要根据条件执行不同的代码,重复相同的任务,并将方法划分为有意义的单元。
条件语句和开关
string GetState(int health)
{
if (health <= 0)
{
return "Dead";
}
return health < 30 ? "Danger" : "Normal";
}
int reward = rank switch
{
"S" => 1000,
"A" => 500,
_ => 100
};
对于简单的双管脚来说,if 更容易阅读,而 switch 在将一个值与多个情况进行比较时效果很好。 _ 是不符合任何前述模式的剩余情况。
环形
var damages = new[] { 10, 20, 15 };
int total = 0;
foreach (int damage in damages)
{
if (damage <= 0)
{
continue;
}
total += damage;
}
foreach 方便按顺序读取元素。 如果需要索引或者需要直接控制重复的范围,请使用for。
在循环中添加或删除集合的元素可能会使枚举无效。 单独收集要删除的对象或从后面遍历它们会更安全。
方法和早期回报
bool TryAttack(Player attacker, Monster target, out int damage)
{
damage = 0;
if (!attacker.IsAlive || !target.IsAlive)
{
return false;
}
damage = Math.Max(1, attacker.Attack - target.Defense);
target.TakeDamage(damage);
return true;
}
如果返回无法先处理的输入,则正常流程的缩进不会加深。 out参数可用于返回成功或失败以及计算结果。
方法名称应该揭示调用者的意图而不是内部实现。 当条件和迭代变长时,最好确保每个方法只有一个职责,而不是简单地减少行数。