首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于Enum.GetValues()返回值的混淆

关于Enum.GetValues()返回值的混淆
EN

Stack Overflow用户
提问于 2016-08-05 14:31:32
回答 4查看 925关注 0票数 0

我正在阅读一本书中有关枚举的内容,并给出了以下代码示例:

代码语言:javascript
复制
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。为什么会这样呢?

EN

Stack Overflow用户

发布于 2016-08-05 14:43:49

这些值由给定的格式打印出来。尝试删除{0:D},并仅使用{0}。与所创建的列表一样,为列表指定了以下类型:

代码语言:javascript
复制
        Array enumData = Enum.GetValues(e.GetType());
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38791749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档