有沒有一種方法可以在VB.net中組合枚舉?組合枚舉
組合枚舉
回答
我相信你想要的是一個標誌類型的枚舉。
您需要將Flags屬性添加到枚舉的頂部,然後您可以將枚舉與'Or'關鍵字結合使用。
像這樣:
<Flags()> _
Enum CombinationEnums As Integer
HasButton = 1
TitleBar = 2
ReadOnly = 4
ETC = 8
End Enum
注:到右邊的數字總是兩倍大(2的冪) - 這是需要能夠對已設置的各個標誌位。
聯合使用或關鍵字所期望的標誌:
Dim settings As CombinationEnums
settings = CombinationEnums.TitleBar Or CombinationEnums.Readonly
這臺標題欄,然後只讀到枚舉
要檢查什麼的設置:
If (settings And CombinationEnums.TitleBar) = CombinationEnums.TitleBar Then
Window.TitleBar = True
End If
如果你考慮使用枚舉標誌()有一篇好文章here。
如果我正確理解你的問題,你想要結合不同的枚舉類型。所以一個變量可以存儲來自兩個不同枚舉的權利之一的值?如果你問的是將兩個不同值的一個枚舉類型結合起來存儲,你可以看看Dave Arkell的解釋
枚舉只是含有一些語法糖的整數。所以如果你確定沒有重疊,你可以通過將它們轉換爲int來進行組合。
雖然它不會讓漂亮的代碼。我儘量避免大部分時間使用枚舉。通常情況下,如果讓枚舉在代碼中繁殖,那麼在生成重複的case語句和其他混亂的反模式之前,只是時間問題。
組合Enum
的關鍵是確保該值是2的冪(1,2,4,8等),以便您可以對它們執行位操作(|=
&=
)。那些Enum
可以使用Flags
屬性進行標記。 Windows窗體控件上的Anchor
屬性就是這種控件的一個例子。如果標記爲標記,Visual Studio將允許您檢查值而不是在屬性設計器的下拉列表中選擇單個值。
兩種權力:不要忘記1 = 2^0! – 2008-09-12 09:03:06
爲「無」提供0值也是很好的。 – Nyerguds 2017-11-30 12:35:35
可以使用的FlagsAttribute裝飾一個枚舉像這樣可以讓你結合Enum:
<FlagsAttribute> _
Public Enumeration SecurityRights
None = 0
Read = 1
Write = 2
Execute = 4
然後叫他們像這樣(類UserPriviltes):
Public Sub New (_
options As SecurityRights _
)
New UserPrivileges(SecurityRights.Read OR SecurityRights.Execute)
,使上述用戶讀取和執行在一個花哨SecurityRights變量都進行圍繞他們有效地得到組合(位數學)。
要檢查用戶是否有您使用權限,(更按位數學),以檢查用戶提供枚舉值枚舉值你檢查:
//Check to see if user has Write rights
If (user.Privileges And SecurityRights.Write = SecurityRigths.Write) Then
//Do something clever...
Else
//Tell user he can't write.
End If
HTH, 泰勒
- 1. 枚舉的組合
- 2. 組合StringComparison枚舉
- 3. Ruby:組合枚舉器,製作一個新的枚舉器
- 4. 將多個枚舉組合到主枚舉列表中
- 5. 枚舉與功能的方法(組合類/枚舉)
- 6. 我如何組合枚舉比較實際的枚舉
- 7. WPF枚舉結合
- 8. C中的枚舉和組合框#
- 9. 我如何綁定枚舉組合框
- 10. 填充組合框與枚舉陣列
- 11. 解析器組合器的枚舉值
- 12. WPF組合框與枚舉綁定
- 13. 使用枚舉綁定組合框selectedvalue
- 14. 添加枚舉到組合框
- 15. 組合框列綁定到枚舉
- 16. 枚舉在C的所有組合++
- 17. 枚舉組合和位運算符
- 18. Linq - 如何組合兩個枚舉數
- 19. 在WPF中枚舉System.IO.Ports.Parity的組合框
- 20. C# - WPF組合框的SelectedValue從枚舉
- 21. 枚舉每五張牌組合
- 22. Vaadin 6組合框枚舉鏈接
- 23. 數據綁定枚舉組合框
- 24. 綁定組合框項枚舉
- 25. 如何枚舉組合的組合從一個集合
- 26. Active Directory組枚舉
- 27. 如何在c#中使用switch組合中的枚舉組合?
- 28. 枚舉綁定組合框中選擇的值設置爲枚舉值
- 29. WPF C# - 綁定枚舉到組合框,但不使用所有枚舉值
- 30. 結合兩個枚舉
很棒的回答。 (如JonasFollesø在他的回答中指出的那樣) - 關鍵在於使用Enum值來表示權力2(1,2,4,8,16等) – Andrew 2008-09-12 10:09:29