在 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);
我们将打印出他的全名!那么为什么会这样呢?