代码之家  ›  专栏  ›  技术社区  ›  Jon Seigel

为什么Enum.ToString()给出的结果与调试器工具提示中显示的结果不同?

  •  2
  • Jon Seigel  · 技术社区  · 16 年前

    测试程序(.NET 2.0):

    [Flags]
    enum MyEnum
    {
        Member1 = 1,
        Member2 = 2,
    }
    
    class Program
    {
        // Inspecting r shows "Member1 | Member2"
        MyEnum r = MyEnum.Member1 | MyEnum.Member2;
    
        // s = "Member1, Member2"
        string s = r.ToString();
    }

    我早就料到了 .ToString() 返回一个字符串,其中的成员由管道分隔,但情况并非如此。

    奖金信息:来电 Enum.Parse() 在逗号分隔字符串上成功,而提供管道分隔字符串失败。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Philippe Leybaert    16 年前

    VS调试器使用可视化工具来显示值。只有当特定数据类型没有可视化工具时,它才会回退到.toString()方法。

    有关可视化工具的详细信息:

    http://msdn.microsoft.com/en-us/library/zayyhzts.aspx

        2
  •  1
  •   David M    16 年前

    默认值 ToString 标记为的枚举的实现 FlagsAttribute 是逗号分隔的列表。然而,它不一定是 弦线 调试器中显示的结果-必须为按位呈现值的枚举设置调试器可视化工具 OR 符号或管道。

    推荐文章