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