C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#の列挙型(Enum)をCompareToメソッドで比較する方法

C#では、CompareTo()メソッドを使うことで、2つの列挙型(Enum)の値を簡単に比較できます。このメソッドは、呼び出し元の値と引数で渡した対象の値を比較し、その大小関係を数値で返します。

CompareToメソッドの戻り値

CompareTo()メソッドは、比較結果として以下のいずれかの値を返します。

  • 0より小さい値:元の値が対象の値より小さい場合
  • 0:元の値と対象の値が等しい場合
  • 0より大きい値:元の値が対象の値より大きい場合

サンプルコード

以下は、列挙型の値をCompareTo()メソッドで比較する例です。

using System;

class Program {
    enum Products { HardDrive = 0, PenDrive = 4, Keyboard = 8 };

    static void Main() {
        Products prod1 = Products.HardDrive;
        Products prod2 = Products.PenDrive;
        Products prod3 = Products.Keyboard;

        Console.WriteLine("Stock for {0} is more than {1}?", prod3, prod2);
        Console.WriteLine("{0}{1}", prod3.CompareTo(prod2) > 0 ? "Yes" : "No", Environment.NewLine);
    }
}

実行結果

Stock for Keyboard is more than PenDrive?
Yes

コードの解説

この例では、列挙型Productsの各要素にHardDrive = 0PenDrive = 4Keyboard = 8という数値が割り当てられています。prod3.CompareTo(prod2)を実行すると、「Keyboard(8)」と「PenDrive(4)」が比較され、8 − 4 = 4 という正の値が返されます。

そのため、条件式prod3.CompareTo(prod2) > 0trueとなり、実行結果には「Yes」が出力されます。このように、CompareTo()メソッドを利用すれば、列挙型に割り当てられた内部の数値をもとに、大小関係の判定をシンプルに記述できます。

  1. C#の列挙型で使えるEnum.IsDefinedメソッドの使い方

    C#のEnum.IsDefinedメソッドは、指定した列挙型(enum)の中に、特定の整数値、またはその値に対応するメンバー名(文字列)が存在するかどうかを判定し、存在すればtrueを返します。 列挙型の定義例 まず、次のような列挙型を定義してみましょう。 enum Subjects { Maths, Science, English, Economics }; この列挙型では、各メンバーに値を明示的に指定していないため、デフォルトで先頭から順に整数値が割り当てられています。つまり、以下のように初期化されているのと同じです。 Maths = 0, Science = 1, English =

  2. C#のCompareTo()メソッドの使い方を解説

    C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数