Menu
Coddy logo textTech

Short-Circuit Evaluation

CoddyのC#ジャーニー「ロジックとフロー」セクションの一部 — レッスン 36/66。

短絡評価は、C# における最適化手法で、論理 AND (&&) および OR (||) 演算子の第2オペランドが、必要な場合にのみ評価されるものです。

論理 AND (&&) の場合、最初のオペランドが false なら、2番目のオペランドに関わらず結果は常に false となります:

bool result = false && SomeMethod();

この例では、SomeMethod() は最初のオペランドがすでに false であるため呼び出されません。

論理 OR (||) の場合、最初のオペランドが true の場合、2番目のオペランドに関わらず結果は常に true になります:

bool result = true || SomeMethod();

ここでは、SomeMethod() は呼び出されません。なぜなら、最初のオペランドがすでに true だからです。

この動作は、エラーを防ぐために使用できます。例えば、オブジェクトが null かどうかを確認してからそのプロパティにアクセスするような場合です:

// Safe - if student is null, the right side won't evaluate
if (student != null && student.Grade > 70)
{
    Console.WriteLine("Student passed!");
}
challenge icon

チャレンジ

簡単

ProcessUserInput という名前のメソッドを作成し、2 つの引数を受け取るようにしてください:

  • 文字列 (input)
  • 整数 (minLength)

このメソッドは次のことを行います:

  1. input が null でないかをチェックします
  2. input の長さが minLength 以上かをチェックします
  3. 両方の条件が true の場合にのみ、"Valid input: " の後に input を出力します
  4. いずれかの条件が false の場合、"Invalid input" を出力します

潜在的な NullReferenceException を防ぐために、短絡評価を使用してください。

チートシート

短絡評価は、論理演算子の第2オペランドが評価される必要がある場合にのみ評価される最適化手法です。

論理 AND (&&) の場合、最初のオペランドが false の場合、第2オペランドは評価されません:

bool result = false && SomeMethod(); // SomeMethod() は呼び出されません

論理 OR (||) の場合、最初のオペランドが true の場合、第2オペランドは評価されません:

bool result = true || SomeMethod(); // SomeMethod() は呼び出されません

これにより、条件を順序立ててチェックすることでエラーを防げます:

// 安全 - student が null の場合、student.Grade にアクセスされません
if (student != null && student.Grade > 70)
{
    Console.WriteLine("Student passed!");
}

自分で試してみよう

using System;

class ProcessUserInput
{
    public static void processUserInput(string input, int minLength)
    {
        // ここにコードを書いてください
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン