You have to add [Flags] before your enum declaration
[Flags]
public enum TrayModes
{
SingleUnit = 0x01
, Tray = 0x02
, Poll = 0x04
, Trigger = 0x08
};
考慮使用HasFlag功能檢查設置好的標誌
TrayModes t=TrayModes.SingleUnit|TrayModes.Poll;
if(t.HasFlag(TrayModes.SingleUnit))
//return true
編輯: 這是因爲枚舉用標誌屬性都以不同的方式threated, 你可以看到的例子在http://msdn.microsoft.com/en-us/library/system.flagsattribute.aspx A在有和沒有標誌枚舉的字符串屬性顯示它們是如何不同
的值的所有可能的組合枚舉沒有的FlagsAttribute:用的FlagsAttribute的 枚舉值的
0 - Black
1 - Red
2 - Green
3 - 3
4 - Blue
5 - 5
6 - 6
7 - 7
8 - 8
所有可能的組合:
0 - Black
1 - Red
2 - Green
3 - Red, Green
4 - Blue
5 - Red, Blue
6 - Green, Blue
7 - Red, Green, Blue
8 - 8
我已經注意到這一點,買爲什麼我要加嗎?示例代碼中的集合沒有這個屬性,但是我產生了一個錯誤。此外,我沒有'HasFlag'方法,我在C#2.0 – Fr33dan 2013-03-27 16:02:22
是它改變了'ToString'的結果,但如果你看看那個例子中,你甚至可以看到的任何值仍然是枚舉的有效值,而不標誌屬性。否則,你會在'ToString'之前產生一個錯誤。任何'int'都應該是一個有效的值。 – Fr33dan 2013-03-27 17:26:38