2010-01-12 43 views
2

测试程序(.NET 2.0):为什么enum.ToString()会给出与调试器工具提示中显示的结果不同的结果?

[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

奖金信息 - 你可以重写调试器如何显示自己的类用[DebuggerDisplayAttribute] – Jimmy 2010-01-12 21:37:37

+0

谢谢你的提示 - 我一直在想怎么说已完成。 – 2010-01-12 21:43:41

回答

1

标记为FlagsAttribute的枚举的默认实现ToString是逗号分隔的列表。但是,它不一定是在调试器中显示的ToString结果 - 必须为调试器设置一个调试器展示器,该调试器使用符号或管道按位呈现值。

相关问题