以下のようなコードで、.NETコンパイラがすべてのコードパスが値を返すことを確立できないのはなぜですか?
bool Test(bool param) {
bool test = true;
if (param)
test = false;
else
test = false;
if (!test)
return false;
}
エラーCS0161:すべてのコードパスが値を返すわけではありません!
コードはリファクタリングできますが、コンパイラはそれを示唆していません。しかし、すべてのリターンパスがカバーされています-それでは、なぜコンパイラはそれらがカバーされていないと文句を言うのですか?
編集:ここでの結論は次のとおりだと思います:
(error CS0161) + (all code paths obviously return a value) => refactor code.
その翻訳の習慣を身につけたら、私はすべてが大丈夫だと思います。