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ラベルの間にコードを記述せずに次々と重ね、最後に1つのbreakを置きます。

string grade = "B";

switch (grade)
{
    case "A":
    case "a":
        Console.WriteLine("Excellent - 4 points");
        break;
    case "B":
    case "b":
        Console.WriteLine("Good - 3 points");
        break;
    case "C":
    case "c":
        Console.WriteLine("Satisfactory - 2 points");
        break;
    default:
        Console.WriteLine("Needs improvement");
        break;
}

ここでは、"B""b" の両方が同じブロックにフォールスルーし、"Good - 3 points" を出力します。このパターンは、大文字と小文字の入力、あるいは任意の値のセットに対して同じ結果を出したい場合に便利です。

Switchは、同じ結果を共有する異なるラベルを持つケースをグループ化することもできます。

char dayCode = 'M';

switch (dayCode)
{
    case 'M':
        Console.WriteLine("Monday");
        break;
    case 'T':
        Console.WriteLine("Tuesday or Thursday");
        break;
    case 'W':
        Console.WriteLine("Wednesday");
        break;
    case 'F':
        Console.WriteLine("Friday");
        break;
    default:
        Console.WriteLine("Unknown day");
        break;
}
challenge icon

チャレンジ

中級

convertGradeToPoints という名前のメソッドを作成し、以下の処理を実装してください:

  1. 文字列のパラメータとして成績(文字)を受け取ります
  2. switchif-else の両方の手法を使用して、それを数値のグレードポイントに変換します
  3. メソッド内では両方の手法を実装し、switch による実装の結果を返してください
  4. 以下の成績変換ルールを使用してください:
    • "A" または "a" = 4
    • "B" または "b" = 3
    • "C" または "c" = 2
    • "D" または "d" = 1
    • "F" または "f" = 0
    • その他の入力 = -1

自分で試してみよう

public class ConvertGradeToPoints
{
    // convertGradeToPoints メソッドを実装します
    public static int convertGradeToPoints(string letterGrade)
    {
        // ここにコードを記述してください
        
    }
}
quiz icon腕試し

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

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