← SEARCHABLE ARCHIVE
C# · 2026-07-17

C# 從基礎到精通 — 第 2 講

使用條件語句、迴圈和方法建立流

INTERACTIVE READING MODE →

該部落格上撰寫的文章是出於教學目的而創建的。 另外,文章中的資訊可能不正確,請謹慎。

程式不僅僅以儲存值結束。 您需要根據條件執行不同的程式碼,重複相同的任務,並將方法劃分為有意義的單元。

條件語句和開關

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參數可用於傳回成功或失敗以及計算結果。

方法名稱應該揭示呼叫者的意圖而不是內部實作。 當條件和迭代變長時,最好確保每個方法只有一個職責,而不是簡單地減少行數。