ser*_*hio 3 .net vb.net attributes
下面的代码有什么区别
' no Flags'
Public Enum MyEnum
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
End Enum
Run Code Online (Sandbox Code Playgroud)
和
<Flags()> _
Public Enum MyEnum
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
End Enum
Run Code Online (Sandbox Code Playgroud)
我做了
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
Run Code Online (Sandbox Code Playgroud)
并在两种情况下获得相同的结果(有或没有FlagAttribute).
基本上,它告诉CLR可以组合枚举的值.如果没有此属性,组合这些值将导致未知值(但它仍然有效).使用该属性,可以正确解释组合
没有Flags属性:
' Gives "Monday, Tuesday" '
Dim s As String = (MyEnum.Monday Or MyEnum.Tuesday).ToString()
Run Code Online (Sandbox Code Playgroud)
没有Flags属性:
' Gives "3" '
Dim s As String = (MyEnum.Monday Or MyEnum.Tuesday).ToString()
Run Code Online (Sandbox Code Playgroud)