爲什麼在下面的代碼中,.NET編譯器無法確定所有代碼路徑都返回值?.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.
一旦你得到的是翻譯的習慣,我想一切正常。
我想開發者並不覺得需要像這樣的代碼。 – 2012-04-11 21:31:02
是否有您看到此編譯器錯誤的*有用*代碼的實際代碼片段? – 2012-04-11 21:31:14
是的,您可以在上面添加幾行代碼,使其成爲非trival /真正有用的,但具有所有代碼路徑返回但編譯器仍然抱怨的所有特性。 – Ricibob 2012-04-11 21:33:21