在C#中使用枚举的乐趣。创建一个通用列表来存储您之前定义的一些Enum,并在其中添加少量项目。用foreach或GetEnumerator<T>()
迭代,但指定一些其他枚举然后原始,看看会发生什么。我期待InvalidCastException或类似的东西,但它完美的作品:)。枚举是否只命名为整数,类型或两者都不是?
为了说明,让我们看一个简单的控制台应用程序并创建两个枚举有:汽车及动物:
public enum Cars
{
Honda = 0,
Toyota = 1,
Chevrolet = 2
}
public enum Animals
{
Dog = 0,
Cat = 1,
Tiger = 2
}
而且在main方法做到这一点:
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
这是为什么发生?我的第一个猜测是,枚举实际上并不是一个类型自己它只是和int,但这不是事实:如果我们写:
Console.WriteLine(Animals.Tiger.GetType().FullName);
我们将得到他的完全合格的名称打印!那么为什么呢?
是非常好的答案。我现在认识到,任何类型的枚举之间的明确映射都不会失败,因为它们实际上是一个整数,并且存在问题的根源。 – Aleksandar 2008-12-10 07:19:57