C#で列挙型(enum)のメンバーを比較する方法
C# で列挙型(enum)のメンバー同士を比較したい場合は、Enum.CompareTo() メソッドを使用します。このメソッドは、現在のインスタンスと指定されたオブジェクトを比較し、相対的な順序を表す整数値を返します。
列挙型の定義
まず、学生のランクを表す列挙型とその値を設定しましょう。
enum StudentRank { Tom = 3, Henry = 2, Amit = 1 };ここでは、Tom に 3、Henry に 2、Amit に 1 という数値が割り当てられています。この数値が比較の基準となります。
CompareTo() メソッドによる比較
次に、compareTo() メソッドを使って、一方の列挙型の値をもう一方の値と比較します。戻り値が 0 より大きければ、呼び出し元の値の方が「大きい」(順位が上)ことを意味します。
Console.WriteLine( "{0}{1}", student1.CompareTo(student2) > 0 ? "Yes" : "No", Environment.NewLine );サンプルコード
以下は、C# で列挙型のメンバーを比較する完全なコード例です。
using System;
public class Demo {
enum StudentRank { Tom = 3, Henry = 2, Amit = 1 };
public static void Main() {
StudentRank student1 = StudentRank.Tom;
StudentRank student2 = StudentRank.Henry;
StudentRank student3 = StudentRank.Amit;
Console.WriteLine("{0} has more rank than {1}?", student1, student2);
Console.WriteLine( "{0}{1}", student1.CompareTo(student2) > 0 ? "Yes" : "No", Environment.NewLine );
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
Tom has more rank than Henry? Yes
このように、CompareTo() メソッドを使えば、列挙型に割り当てられた値に基づいてメンバー間の大小関係を簡単に判定できます。student1(Tom = 3)は student2(Henry = 2)より大きな値を持つため、比較結果は「Yes」と表示されます。
-
C#の抽象クラスとシールクラスとは?クラスメンバーの定義方法を解説
C#の抽象クラスには、抽象メソッドと非抽象メソッドの両方を含めることができます。ただし、抽象クラスは直接インスタンス化することができないという特徴があります。一方、シールクラスは継承を禁止するクラスであり、他のクラスの基底クラスとして使用することはできません。抽象クラス(Abstract Class)抽象クラスを宣言するには、クラス定義の前に abstract キーワードを指定します。次の例は、抽象メソッドを持つ抽象クラスのクラスメンバーの定義です。public abstract class Vehicle { public abstract v
-
PythonのEnum(列挙型)とは?基本から応用まで徹底解説
PythonのEnumは、一意かつ不変の値に紐付けられたシンボリックな名前(メンバー)の集合、すなわち「列挙型」を作成するためのクラスです。列挙型のメンバー同士はシンボル名によって比較でき、列挙型そのものも反復処理(イテレーション)が可能です。Enumには主に以下のような特徴があります。オブジェクトの評価可能な文字列表現(repr())を持つnameキーワードを使ってメンバー名を表示できるtype()関数でEnumの型を確認できる基本的な使い方の例import enum # enumクラスを使って列挙型を定義 class Days(enum.Enum): Sun = 1 Mon