サーチ…


If-Elseステートメント

一般的に、プログラミングは、コードが異なる入力または条件でどのように動作するかを説明するために、コード内のdecisionまたはbranch必要とすることがあります。 C#プログラミング言語(およびこの問題のほとんどのプログラミング言語)では、プログラム内にブランチを作成する最も単純で時には最も有用な方法は、 If-Elseステートメントによるものです。

100までのスコアを表すintパラメータをとるメソッド(別名関数)があると仮定し、メソッドは合格か失敗かを示すメッセージを出力します。

static void PrintPassOrFail(int score)
{
    if (score >= 50) // If score is greater or equal to 50
    {
        Console.WriteLine("Pass!");
    }
    else // If score is not greater or equal to 50
    {
        Console.WriteLine("Fail!");
    }
}

このメソッドを見ると、 If文の中にこのコード行( score >= 50 )があることに気付くかもしれません。これはboolean条件とbooleanことができます。条件がtrueと等しいと評価されたifif { }間にあるコードが実行されます。

たとえば、このメソッドが次のように呼び出されたとしますPrintPassOrFail(60);このメソッドの出力は、「 パス! 」というコンソールプリントになります 60のパラメータ値が50以上であるためです。

ただし、メソッドが次のように呼び出された場合: PrintPassOrFail(30); 、メソッドの出力は「 Fail! 」と表示されます 。これは、値30が50以上でないため、 If文の代わりにelse { }間のコードが実行されるためelse

この例では、 スコアは100になるはずですが、これはまったく考慮されていません。 100を超えていないスコア、またはおそらく0を下回るスコアを考慮するには、 If-Else If-Else Statementの例を参照してください。

If-Else If-Elseステートメント

If-Elseステートメントの例に続いて、 Else Ifステートメントを導入する時が来ました。 Else Ifステートメントは、 If-Else If-Else構造体のIfステートメントの直後にありますが、 Ifステートメントと同じ構文を持ちます。これは、単純なIf-Elseステートメントよりも多くのブランチをコードに追加するために使用されます。

If-Else Statementの例では、スコアは100まで上がると指定されています。しかし、これに反する検査は一度もなかった。これを修正するには、 If-Else Statementのメソッドを次のように変更します。

static void PrintPassOrFail(int score)
{
    if (score > 100) // If score is greater than 100
    {
        Console.WriteLine("Error: score is greater than 100!");
    }
    else if (score < 0) // Else If score is less than 0
    {
        Console.WriteLine("Error: score is less than 0!");
    }
    else if (score >= 50) // Else if score is greater or equal to 50
    {
        Console.WriteLine("Pass!");
    }
    else // If none above, then score must be between 0 and 49
    {
        Console.WriteLine("Fail!");
    }
}

これらの文はすべて、条件が満たされるまで上から順に実行されます。このメソッドのこの新しいアップデートでは、スコアの範囲外に対応する2つの新しいブランチを追加しました。

たとえば、コードでPrintPassOFail(110);というメソッドを呼び出したとしますPrintPassOFail(110); 、出力は「 Error:score is 100より大きい 」というConsole Printとなります ; PrintPassOrFail(-20);ようなコードでこのメソッドを呼び出した場合PrintPassOrFail(-20); 、出力はError:スコアが0より小さいと言うでしょう

スイッチ文

switch文を使用すると、変数の値リストとの等価性をテストできます。各値はケースと呼ばれ、スイッチオンされている変数は各スイッチのケースごとにチェックされます。

switch文は、単一の変数に対して複数の可能な値をテストするif...else if... else..if...else if... else..文よりも簡潔で理解できることがよくあります。

構文は次のとおりです

switch(expression) {
   case constant-expression:
      statement(s);
      break;
   case constant-expression:
      statement(s);
      break;
  
   // you can have any number of case statements
   default : // Optional
      statement(s);
      break;
}

switch文を使用しているときに考慮する必要があるものがあります

  • switch文で使用される式は、整数型または列挙型、またはクラスが整数型または列挙型への単一の変換関数を持つクラス型でなければなりません。
  • スイッチ内には、いくつでもcase文を記述できます。それぞれの場合の後に、比較される値とコロンが続きます。比較する値は、各switch文内で一意でなければなりません。
  • switchステートメントには、省略可能なデフォルトの大文字小文字を使用できます。デフォルトケースは、いずれのケースも当てはまらないときにタスクを実行するために使用できます。
  • それぞれのケースは、空のステートメントでない限り、 breakステートメントで終了する必要があります。その場合、実行はその下のケースで続行されます。 return文、 throw文またはgoto case文が使用されているgoto caseは、break文を省略することもできます。

例は賢明な成績で与えることができます

char grade = 'B';

switch (grade)
{
    case 'A':
        Console.WriteLine("Excellent!");
        break;
    case 'B':
    case 'C':
        Console.WriteLine("Well done");
        break;
    case 'D':
        Console.WriteLine("You passed");
        break;
    case 'F':
        Console.WriteLine("Better try again");
        break;
    default:
        Console.WriteLine("Invalid grade");
        break;
}

ステートメント条件が標準ブール式および値である場合

次のステートメント

if (conditionA && conditionB && conditionC) //...

正確には

bool conditions = conditionA && conditionB && conditionC;
if (conditions) // ...

言い換えれば、if文の中の条件は通常のブール式を形成するだけです。

条件文を記述する際のよくある間違いは、 truefalseとを明示的に比較することtrue

if (conditionA == true && conditionB == false && conditionC == true) // ...

これは、次のように書き換えることができます。

if (conditionA && !conditionB && conditionC)


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow