下面的代码有什么区别
' no Flags'
Public Enum MyEnum
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
End Enum
和
<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()
关于.net - FlagsAttribute 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2250648/