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參數可用於傳回成功或失敗以及計算結果。
方法名稱應該揭示呼叫者的意圖而不是內部實作。 當條件和迭代變長時,最好確保每個方法只有一個職責,而不是簡單地減少行數。