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 = 0、PenDrive = 4、Keyboard = 8という数値が割り当てられています。prod3.CompareTo(prod2)を実行すると、「Keyboard(8)」と「PenDrive(4)」が比較され、8 − 4 = 4 という正の値が返されます。
そのため、条件式prod3.CompareTo(prod2) > 0はtrueとなり、実行結果には「Yes」が出力されます。このように、CompareTo()メソッドを利用すれば、列挙型に割り当てられた内部の数値をもとに、大小関係の判定をシンプルに記述できます。
-
C#の列挙型で使えるEnum.IsDefinedメソッドの使い方
C#のEnum.IsDefinedメソッドは、指定した列挙型(enum)の中に、特定の整数値、またはその値に対応するメンバー名(文字列)が存在するかどうかを判定し、存在すればtrueを返します。 列挙型の定義例 まず、次のような列挙型を定義してみましょう。 enum Subjects { Maths, Science, English, Economics }; この列挙型では、各メンバーに値を明示的に指定していないため、デフォルトで先頭から順に整数値が割り当てられています。つまり、以下のように初期化されているのと同じです。 Maths = 0, Science = 1, English =
-
C#のCompareTo()メソッドの使い方を解説
C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数