有没有一种方法可以在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