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が返ります。このように、無効な値や名前が入力された場合のバリデーション処理などに活用すると便利です。
-
C#のCompareTo()メソッドの使い方を解説
C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数
-
Javaのメソッド内に列挙型(enum)は定義できる?エラーの原因と正しい書き方を解説
Javaの列挙型(enum)は、名前付き定数をひとつのグループとしてまとめて扱うための仕組みです。基本的な構文は以下のとおりです。enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }列挙型はクラスの中であれば定義できますが、メソッドの中で定義することはできません。メソッド内にenumを記述すると、コンパイル時に「enum types must not be local(列挙型はローカルにしてはならない)」というコンパイルエラーが発生します。エラーになるコード例次のように、メソッド内に直接