我有這樣定義的標誌枚舉:印刷標誌枚舉爲獨立的標誌
[Flags]
public enum MyEnum
{
None = 0x00,
Choice1 = 0x01,
Choice2 = 0x02,
Choice3 = 0x04,
Default = Choice1 | Choice2,
All = Default | Choice3
}
我想一個方法來打印出該標誌被包含在MyEnum.Default
。在這種情況下,我希望輸出結果類似於「Choice1,Choice2」。
簡單打印MyEnum.Default.ToString()
的問題是,當我想要「Choice1,Choice2」時,輸出將是「默認」。
這裏有一個選項,但如果我使用這個選項,每次更改枚舉時都必須更新打印。
((StudyData.Choice1 & StudyData.Default) == StudyData.Choice1 ? StudyData.Choice1.ToString() : "") + ", " +
((StudyData.Choice2 & StudyData.Default) == StudyData.Choice2 ? StudyData.Choice2.ToString() : "") + ", " +
((StudyData.Choice3 & StudyData.Default) == StudyData.Choice3 ? StudyData.Choice3.ToString() : "")
有沒有人有更乾淨的方式做到這一點?理想情況下,我想要打印包含在MyEnum.Default
中的標誌,而不必在每次添加新標誌或更改默認值時更改打印代碼。
謝謝!
不錯...和無恥地被盜爲未來的參考。 – 2011-04-04 19:06:51
請注意,如果您的枚舉具有負值(例如使用Visual Studio擴展性框架,Microsoft.VisualStudio.Shell.Interop._VSRDTFLAGS),那麼在此使用ulong和ToUInt64會導致問題。如果用long和ToInt64替換,那麼它將處理負值的枚舉。 – Nerdtron 2017-11-06 15:34:35