C# での列挙型の楽しみ。以前に定義したいくつかの Enum を格納するために作成された汎用リストを 1 つ取り、そこにいくつかの項目を追加します。foreach で反復GetEnumerator<T>()
するか、元の列挙型以外の列挙型を指定して、何が起こるかを確認します。InvalidCastException またはそのようなものを期待していましたが、完全に機能します:)。
例として、単純なコンソール アプリケーションを使用して、Cars と Animals という 2 つの列挙型を作成してみましょう。
public enum Cars
{
Honda = 0,
Toyota = 1,
Chevrolet = 2
}
public enum Animals
{
Dog = 0,
Cat = 1,
Tiger = 2
}
そして、メインメソッドでこれを行います:
public static void Main()
{
List<Cars> cars = new List<Cars>();
List<Animals> animals = new List<Animals>();
cars.Add(Cars.Chevrolet);
cars.Add(Cars.Honda);
cars.Add(Cars.Toyota);
foreach (Animals isItACar in cars)
{
Console.WriteLine(isItACar.ToString());
}
Console.ReadLine();
}
これをコンソールに出力します:
Tiger Dog Cat
なぜこうなった?私の最初の推測では、enum 自体は実際には Type ではなく、単なる int ですが、そうではありません。
Console.WriteLine(Animals.Tiger.GetType().FullName);
彼の完全修飾名を印刷します! では、なぜこれが?