Menu
Coddy logo textTech

If vs. Switch Comparison

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

C# は、複数の条件を処理するための主な方法を 2 つ提供します:if-else 文と switch 文。それぞれが異なる状況で強みを持っています。

if-else 文は柔軟で、あらゆる種類の条件を扱うことができます:

string grade = "B";

if (grade == "A")
{
    Console.WriteLine("Excellent");
}
else if (grade == "B")
{
    Console.WriteLine("Good");
}
else if (grade == "C")
{
    Console.WriteLine("Satisfactory");
}
else
{
    Console.WriteLine("Needs improvement");
}

switch 文は、単一の変数を複数の定数値に対して比較する際に、よりクリーンです:

string grade = "B";

switch (grade)
{
    case "A":
        Console.WriteLine("Excellent");
        break;
    case "B":
        Console.WriteLine("Good");
        break;
    case "C":
        Console.WriteLine("Satisfactory");
        break;
    default:
        Console.WriteLine("Needs improvement");
        break;
}

switch は、同じ結果を共有する複数の case を、case ラベルを連続して積み重ねることでグループ化できます — これを fall-through と呼びます。いくつかの case の間にコードがない場合、それらはすべて同じブロックを実行します:

char dayCode = 'S';

switch (dayCode)
{
    case 'M':
    case 'T':
    case 'W':
    case 'R':
    case 'F':
        Console.WriteLine("Weekday");
        break;
    case 'S':
    case 'U':
        Console.WriteLine("Weekend");
        break;
    default:
        Console.WriteLine("Unknown day");
        break;
}

ここでは、'S''U' の両方が同じ Console.WriteLine("Weekend") の呼び出しに fall through します。このように空の case ラベルを積み重ねるのは、C# で case をグループ化する標準的な方法です。

challenge icon

チャレンジ

中級

convertGradeToPoints という名前のメソッドを作成してください:

  1. 文字列パラメータとしてレターグレードを受け取ります
  2. switch と if-else の両方のアプローチを使用して、それを数値のグレードポイントに変換します
  3. このメソッドは両方のアプローチを実装し、switch 実装の結果を返します
  4. 以下のグレード変換を使用します:
    • "A" または "a" = 4
    • "B" または "b" = 3
    • "C" または "c" = 2
    • "D" または "d" = 1
    • "F" または "f" = 0
    • その他の入力 = -1

チートシート

C# では、複数の条件を処理するための主な方法として 2 つを提供します:if-else 文switch 文

if-else 文 は柔軟で、あらゆる種類の条件を扱うことができます:

string grade = "B";

if (grade == "A")
{
    Console.WriteLine("Excellent");
}
else if (grade == "B")
{
    Console.WriteLine("Good");
}
else if (grade == "C")
{
    Console.WriteLine("Satisfactory");
}
else
{
    Console.WriteLine("Needs improvement");
}

switch 文 は、単一の変数を複数の定数値と比較する場合に、よりクリーンです:

string grade = "B";

switch (grade)
{
    case "A":
        Console.WriteLine("Excellent");
        break;
    case "B":
        Console.WriteLine("Good");
        break;
    case "C":
        Console.WriteLine("Satisfactory");
        break;
    default:
        Console.WriteLine("Needs improvement");
        break;
}

switch 文は、複数の case をグループ化(fall-through)して、同じ結果を共有するために case ラベルを積み重ねることができます:

char dayCode = 'S';

switch (dayCode)
{
    case 'M':
    case 'T':
    case 'W':
    case 'F':
        Console.WriteLine("Weekday");
        break;
    case 'S':
    case 'U':
        Console.WriteLine("Weekend");
        break;
    default:
        Console.WriteLine("Unknown day");
        break;
}

自分で試してみよう

public class ConvertGradeToPoints
{
    // convertGradeToPoints メソッドを実装する
    public static int convertGradeToPoints(string letterGrade)
    {
        // ここにコードを書く
        
    }
}
quiz icon腕試し

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

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