在弄乱枚举的同时,我发现了一个枚举的奇怪行为。是什么导致了这种枚举的奇怪行为?
考虑下面的代码:
static void Main()
{
Console.WriteLine("Values");
Console.WriteLine();
foreach (Month m in Enum.GetValues(typeof(Month)))
{
Console.WriteLine(m.ToString());
}
Console.WriteLine();
Console.WriteLine("Names");
Console.WriteLine();
foreach (var m in Enum.GetNames(typeof(Month)))
{
Console.WriteLine(m);
}
Console.ReadLine();
}
public enum Month
{
January,
May,
March,
April
}
此代码将产生以下输出(如预期):
Values
January
May
March
April
Names
January
May
March
April
现在,可以说我改变一点点我的枚举,像这样:
public enum Month
{
January = 3,
May,
March,
April
}
如果我运行相同的代码,相同的结果将apear(这是奇怪的,因为它是)。现在,如果我改变我的枚举是这样的:
public enum Month
{
January = "g",
May,
March,
April
}
我得到以下编译器错误:
无法隐式转换类型“字符串”到“廉政”。
为什么编译器允许我将enum的值之一设置为3,但不是g?为什么第一个结果与第二个结果完全相同?如果我改变了1月的价值,那么为什么GetValues
不打印3?
Enum是整数。当你看到一个单词'January'时,它的值为1.(或者你在第二个例子中指定的值为3)但它不能具有'g'的值。 – paqogomez 2015-04-01 17:31:01
阅读http://stackoverflow.com/a/16039343/380384看看你可以用'enum'做什么。 – ja72 2015-04-01 17:35:14