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

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

C#のEnum.IsDefinedメソッドは、指定した列挙型(enum)の中に、特定の整数値、またはその値に対応するメンバー名(文字列)が存在するかどうかを判定し、存在すればtrueを返します。

列挙型の定義例

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

enum Subjects { Maths, Science, English, Economics };

この列挙型では、各メンバーに値を明示的に指定していないため、デフォルトで先頭から順に整数値が割り当てられています。つまり、以下のように初期化されているのと同じです。

Maths = 0, Science = 1, English = 2, Economics = 3

そのため、IsDefined()メソッドを使って「3」という値がこの列挙型に定義されているかどうかを調べると、Economics = 3が存在するため、結果はTrueとなります。

サンプルコード

using System;

public class Demo {
    enum Subjects { Maths, Science, English, Economics };

    public static void Main() {
        object ob;
        ob = 3;
        Console.WriteLine("{0} = {1}", ob, Enum.IsDefined(typeof(Subjects), ob));
    }
}

実行結果

3 = True

文字列で判定する場合

IsDefinedメソッドは、整数値だけでなく、メンバー名を文字列として渡すことでも判定できます。例えば"Economics"を渡せばtrueが返り、列挙型に存在しない名前"History"を渡せばfalseが返ります。このように、無効な値や名前が入力された場合のバリデーション処理などに活用すると便利です。

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

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

  2. Javaのメソッド内に列挙型(enum)は定義できる?エラーの原因と正しい書き方を解説

    Javaの列挙型(enum)は、名前付き定数をひとつのグループとしてまとめて扱うための仕組みです。基本的な構文は以下のとおりです。enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }列挙型はクラスの中であれば定義できますが、メソッドの中で定義することはできません。メソッド内にenumを記述すると、コンパイル時に「enum types must not be local(列挙型はローカルにしてはならない)」というコンパイルエラーが発生します。エラーになるコード例次のように、メソッド内に直接