.NET-Compiler und "Nicht alle Codepfade geben einen Wert zurück"

Warum kann der .NET-Compiler in Code wie dem folgenden nicht feststellen, dass alle Codepfade einen Wert zurückgeben?

<code>bool Test(bool param) {
    bool test = true;
    if (param)
        test = false;
    else
        test = false;
    if (!test)
        return false;
}
</code>

Fehler CS0161: Nicht alle Codepfade geben einen Wert zurück!

Der Code kann überarbeitet werden - der Compiler schlägt dies jedoch nicht vor. Alle Rückkehrpfade sind jedoch abgedeckt. Warum beschwert sich der Compiler, dass dies nicht der Fall ist?

Edit: Ich denke, die Schlussfolgerung hier ist, dass:

<code>(error CS0161) + (all code paths obviously return a value) => refactor code.  
</code>

Wenn Sie sich diese Übersetzung angewöhnt haben, ist alles in Ordnung.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage