私は元 Pascal ユーザーで、現在 C# を学習中です。質問は次のとおりです。
以下のコードはスイッチを作るよりも速いですか?
int a = 5;
if (a == 1)
{
....
}
else if(a == 2)
{
....
}
else if(a == 3)
{
....
}
else if(a == 4)
{
....
}
else
....
そしてスイッチ:
int a = 5;
switch(a)
{
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
case 4:
...
break;
default:
...
break;
}
どちらが速いですか?
私のプログラムも同様の構造(非常に多くの「else if」ステートメント)を持っているので、質問しています。これらをスイッチに変換する必要がありますか?
ベストアンサー1
アイテムが少数の場合、違いはわずかです。アイテムが多数ある場合は、必ずスイッチを使用する必要があります。
スイッチに 5 つ以上の項目が含まれている場合、ルックアップ テーブルまたはハッシュ リストを使用して実装されます。これは、すべての項目が同じアクセス時間を取得することを意味します。一方、if: のリストでは、前のすべての条件を最初に評価する必要があるため、最後の項目に到達するまでに時間がかかります。