下面的代码有什么区别
' no Flags'
Public Enum MyEnum
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
End Enum
and
<Flags()> _
Public Enum MyEnum
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
End Enum
我做的是
Dim days As MyEnum = MyEnum.Monday Or MyEnum.Tuesday Or MyEnum.Wednesday
If (days And MyEnum.Tuesday) = MyEnum.Tuesday Then
Console.WriteLine("Tuesday OK") ' here'
Else
Console.WriteLine("Tuesday NOK")
End If
If (days And MyEnum.Thursday ) = MyEnum.Thursday Then
Console.WriteLine("Thursday OK")
Else
Console.WriteLine("Thursday NOK") ' here'
End If
并在两种情况下获得相同的结果(有或没有 FlagAttribute)。
基本上,它告诉 CLR 枚举的值可以组合。如果没有此属性,组合这些值将导致未知值(但它仍然有效)。通过该属性,可以正确解释组合
如果没有Flags
属性 :
' Gives "Monday, Tuesday" '
Dim s As String = (MyEnum.Monday Or MyEnum.Tuesday).ToString()
如果没有Flags
属性 :
' Gives "3" '
Dim s As String = (MyEnum.Monday Or MyEnum.Tuesday).ToString()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)