3

私は通常、複数の条件ステートメントを作成する必要がある場合にswitchステートメントを使用します。多くの場合、3つ以上の明確に定義された条件があります。

ただし、フォールスルー動作を含む双条件ステートメントを処理するために、単純なif、else if、elseステートメントとswitchステートメントの間で迷うことがよくあります。

if (condition1)
{
    // handling condition1.
}
else if (condition2)
{
    // handling condition2.
}
else 
{
    // handling fall-through.
}

また

switch (n)
{
    case condition1:
    // handling condition1.
    break;

    case condition2:
    // handling condition2.
    break;

    default:
    // handling fall-through.
    break;
}

ウィキペディアSwitchステートメントの記事には次のように記載されています。

一部の言語およびプログラミング環境では、caseまたはswitchステートメントの使用は、次の理由から、同等の一連のif-elseステートメントよりも優れていると見なされます。

  • デバッグが容易です(たとえば、デバッガーに条件付きブレークポイント機能がない場合は、コードと呼び出しテーブルにブレークポイントを設定します)
  • 読みやすい(主観的)
  • 理解しやすいため
  • メンテナンスが簡単
  • より速い実行の可能性

.NET共通言語ランタイムについて、この場合、switchステートメントのより高速な実行の可能性は現実的ですか?

共通言語ランタイムが両方のシナリオをどのように処理しているか、そして一方が他方よりもどのように好ましいかを知りたいです。

4

3 に答える 3

3

より高速な実行の可能性は、可能であれば(このif... else if...場合は線形検索の代わりに)二分探索を使用しようとすることを意味します。

ただし、実行できないif... else if...ことを実行できるため、一般的にはより強力switchです。

したがって、文字列または整数を比較するだけの場合は、を使用してswitchください。また、読みやすさにも少し役立ちます。

于 2012-11-13T02:08:15.047 に答える
0

If は「Condition」用で、Switch は「Option」用だと思います。

于 2012-11-14T01:43:22.240 に答える
-1

コンパイル時間の目的を考えている場合は、常に IF CONDITION を使用することをお勧めします。if 条件は switch ケースよりも高速にチェックします。

しかし、プログラムで薄くすると、 If 条件は単なる一連のブールチェックになります。プログラムが効率的に動作するためには、大文字と小文字の切り替えを使用する必要があります (時間はかかりますが)。

于 2012-11-13T02:12:56.237 に答える