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

C#の列挙型(Enum)でEqualsメソッドを使って等価性を比較する方法

C#において、列挙型(enum)同士が等しいかどうかを判定するには、Equals()メソッドを使用します。このメソッドは、2つの列挙型の値が同じ基になる値を持っているかどうかを比較し、結果をbool型(true/false)で返します。

基本的な使い方

まず、次のような列挙型を定義してみましょう。

enum Products { HardDrive, PenDrive, Keyboard };

続いて、Products型の変数を2つ作成し、同じ値を代入します。

Products prod1 = Products.HardDrive;
Products prod2 = Products.HardDrive;

この状態でEquals()メソッドを使って等価性を確認すると、両者が同じ基になる値(ここではHardDrive)を持っているため、結果はtrueになります。

サンプルコード

以下は、異なる列挙型間でもEquals()メソッドを試した完全なサンプルコードです。

using System;
class Program {
    enum Products { HardDrive, PenDrive, Keyboard };
    enum ProductsNew { Mouse, HeadPhone, Speakers };
    static void Main() {
        Products prod1 = Products.HardDrive;
        Products prod2 = Products.HardDrive;
        ProductsNew newProd1 = ProductsNew.HeadPhone;
        ProductsNew newProd2 = ProductsNew.Speakers;
        Console.WriteLine("Both are same products = {0}", prod1.Equals(prod2) ? "Yes" : "No");
        Console.WriteLine("Both are same products = {0}", newProd1.Equals(newProd2) ? "Yes" : "No");
    }
}

実行結果

Both are same products = Yes
Both are same products = No

解説

最初の比較では、prod1とprod2の両方にProducts.HardDriveが代入されているため、Equals()メソッドは「Yes」を返します。一方、2番目の比較では、newProd1にはHeadPhone、newProd2にはSpeakersという異なる値が代入されているため、「No」が出力されます。

なお、列挙型の比較にはEquals()メソッド以外にも、==演算子やCompareTo()メソッドを使う方法があります。単純な等価チェックであれば==演算子で十分ですが、object型として扱う場合などはEquals()メソッドが便利です。用途に応じて適切な方法を選択しましょう。

  1. C#のEnum.Parseメソッドで列挙型を解析する方法

    C#のEnumクラスに用意されているParseメソッドを使用すると、列挙型定数の名前や数値の文字列表現を、それに対応する列挙型オブジェクトへ変換できます。文字列として受け取ったデータを列挙型として扱いたい場面で非常に便利なメソッドです。列挙型の定義ここでは、次のように車種を表す列挙型を定義します。enum Vehicle { Car, Bus, Truck, Motobike };Enum.Parse()の使い方まず、ループ処理の中でGetNames()メソッドを呼び出し、列挙型が持つすべての定数名を取得します。その後、取得した名前をEnum.Parse()メソッドに渡すことで、文字列を列挙型

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

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