2010-01-12 44 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結果 - 必須爲調試器設置一個調試器展示器,該調試器使用符號或管道按位呈現值。

相關問題