【问题标题】:How do I use enumeration flags?如何使用枚举标志?
【发布时间】:2018-03-16 19:33:58
【问题描述】:

我对如何正确使用和组合枚举标志感到困惑。下面是代码示例。如果我调用GetCarByColor(CarColor.Blue),我希望它返回所有颜色为蓝色的汽车,但在这种情况下,它返回一个空列表,因为我列表中的汽车是红色或蓝色。如果汽车可能是蓝色的,我该如何正确返回正确的汽车列表?

<Flags>
Public Enum CarColor
    Red = 1
    Green = 2
    Blue= 4
End Enum

Public Class Cars
    Public Property Color as CarColor
End Class

Public Class GetCars
    Private _cars as List(of Car) From {New Car() With {Color = CarColor.Red Or CarColor.Blue}}

    Public Function GetCarByColor(color as CarColor) as List(of Car)
        Return _cars.Where(Function(f) f.Color = color).ToList
    End Sub
End Class

【问题讨论】:

    标签: .net vb.net enums


    【解决方案1】:

    在 .NET 4.0 及更高版本中,您可以使用Enum HasFlags 方法。

    Public Function GetCarByColor(color as CarColor) as List(of Car)
        Return _cars.Where(Function(f) f.Color.HasFlag(color)).ToList()
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-06
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多