私はswitchステートメントがで利用できないことCodeDom
とコンパイラがswitchステートメントをどのように扱うかを知っています。
したがって、多くのケースが存在する場合のパフォーマンス上の理由から、If-elseを使用したくありません。if
-elseではなくswitchステートメントを使用するのはなぜですか。
特定のケースリストのジャンプテーブルをシミュレートするコードを生成することは可能です。
switch(value) {
case 0: return Method0();
case 1: return Method1();
case 4; return Method4();
}
生成されます:
private delegate object Method();
Method[] _jumpTable = new Method[] { Method0, Method1, null, null, Method4 };
private object GetValue(int value)
{
if (value < 0 || value > 4)
return null;
return _jumpTable[value]();
}
シーケンスに穴がある場合、またはリストがまばらな場合に、ケースリストを分析して配列を生成するための最良の方法は何ですか?