我如何使用枚举标志?

时间:2018-03-16 11:26:26

标签: .net vb.net enums

我对如何正确使用和组合枚举标志感到困惑。下面是代码示例。如果我打电话给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

1 个答案:

答案 0 :(得分: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