可以对枚举的值使用比较运算符吗



在VB.Net中,我通常会创建这样的枚举:

Private Enum Zone
IsNegative = -3
IsBad = -2
IsError = -1
Undefined = 0 ' or Unknown, Nothing...
Value1
Value2
ValueN
End Enum

这看起来与Enum框架设计指南一致。最近,我开始确保UndefinedNothing的值也被赋值为0,以便像以下这样的比较能够正确工作:

Dim enu as Zone
If enu = Nothing Then ...

Nothing为0,这与EnumNothingUndefined值相匹配。通常,因为我总是将负值分配给错误、错误或不好的值,所以我也会进行比较,比如:

If enu > 0 Then
' Perform something with the Zone Enum knowing it's a correct value
Else
' Handle the Enum error or correct its value
End If

这允许同时对Enum的所有值进行测试。

这是一个好的做法吗?还是我永远不应该用数字比较Enum?是否有理由避免这种情况?

Enum更多的是使用已知值的系统样式方法。您的方法没有错,但您仍然可以使用常量或其他一些变量或直接值,但为了可读性和代码可维护性,建议您按照枚举器的使用方式使用枚举。

If yourvalue = enu.Undefined then ...

最新更新