我正在阅读一本书中有关枚举的内容,并给出了以下代码示例:
namespace FunWithEnums
{
enum EmpType : byte
{
Manager = 10,
Grunt = 1,
Contractor = 100,
VicePresident = 9
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("**** Fun with Enums *****");
EmpType emp = EmpType.Contractor;
EvaluateEnum(emp);
Console.ReadLine();
}
static void EvaluateEnum(System.Enum e)
{
Array enumData = Enum.GetValues(e.GetType());
for (int i =0; i < enumData.Length; i++)
{
Console.WriteLine("Name: {0}, Value: {0:D}", enumData.GetValue(i));
}
Console.WriteLine();
}
}我很困惑在forloop中打印的是什么。输出是
名称:咕噜,值:1 名称: VicePresident,值:9 名称:经理,价值: 10 名称:承包商,价值: 100
但是它如何同时获得每个枚举元素的名称和值?根据Microsoft文档,Array enumData = Enum.GetValues(e.GetType());只应返回“指定枚举中常量值的数组”。我假设按常量计算,它指的是"Manager“、"Grunt”、"Contractor“、"VicePresident",而不是10、1、100和9。那么它为什么要返回每一对而不是只返回雇员类型的名称呢?另外,下面的代码Console.WriteLine(enumData.GetValue(1));的输出只返回一个值,即"VicePresident“,并且不像for循环中那样返回数字9。为什么会这样呢?
发布于 2016-08-05 14:43:49
这些值由给定的格式打印出来。尝试删除{0:D},并仅使用{0}。与所创建的列表一样,为列表指定了以下类型:
Array enumData = Enum.GetValues(e.GetType());https://stackoverflow.com/questions/38791749
复制相似问题