.net - FlagsAttribute 有什么用?

标签 .net vb.net attributes

下面的代码有什么区别

' 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/

相关文章:

.net - Visual Studio 运行后关闭文档

.net - 自定义交易范围

.net - 在 .NET 和 C++ 中运行进程

javascript - 我们如何确定发起SignalR扩展方法的组?

ruby-on-rails - carrierwave:在虚拟属性上安装 uploader

java - 属性与变量/数据类型等之间的区别(java)

Python:如何使对象属性引用调用方法

.net - 通过 SSL 到 .NET 客户端的 ActiveMQ

c# - 尝试运行项目 : Access is denied 时出错

vb.net - 如何在 vb.net 中淡入和淡出自定义面板控件