未到達コード
int result;
switch (value){
case 0: result = someAPI1(); break;
case 1: result = someAPI2(); break;
case 2: result = someAPI3(); break;
}
if (result!=0) error();
のようなコードを書く場合がある。caseは0,1,2の場合以外はありえないとしても、これはresultが未初期化なのでコンパイルエラーとなる。int result = 0;と書けばいいじゃないかと言われるかも知れないが、そのあと必ず再代入されるのでそんなコードは是が非でも書きたくない。
私は、case文の下に一行追加することにした。
default : throw null;
我ながら名案!と思って、C#を長年使っている人に見せたら「ハァ?」と言われた。
普通、やりませんか、そうですか..orz