2

测试程序(.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()逗号分隔的字符串成功,而为其提供管道分隔的字符串失败。

4

2 回答 2

2

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

有关可视化工具的更多信息:

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

于 2010-01-12T21:35:41.147 回答
1

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

于 2010-01-12T21:34:36.070 回答