我只是好奇,爲什麼這個代碼...開關+枚舉=並非所有的代碼路徑返回一個值
enum Tile { Empty, White, Black };
private string TileToString(Tile t)
{
switch (t)
{
case Tile.Empty:
return ".";
case Tile.White:
return "W";
case Tile.Black:
return "B";
}
}
拋出這個錯誤。 t
不可能承擔任何其他價值,是嗎?編譯器是否應該足夠聰明來解決這個問題?
由於該方法是私有的,因此,主叫方應通過唯一的好東西(因爲呼叫者的作者是*您*,而不是你的用戶)我會建議一個Debug.Fail(「Bad caller!沒有餅乾!」)或類似的默認情況。 – 2010-09-02 14:43:15
@Eric:可能...除非你仍然需要返回一些東西或拋出異常*以滿足可達性要求。就我個人而言,我從來沒有像'調試。*'的風扇 - 我傾向於在發佈模式下看到與調試模式相同的異常,但這可能只是我。 – 2010-09-02 14:54:12