在VB.Net中,我通常会创建这样的枚举:
Private Enum Zone
IsNegative = -3
IsBad = -2
IsError = -1
Undefined = 0 ' or Unknown, Nothing...
Value1
Value2
ValueN
End Enum
这看起来与Enum框架设计指南一致。最近,我开始确保Undefined
或Nothing
的值也被赋值为0,以便像以下这样的比较能够正确工作:
Dim enu as Zone
If enu = Nothing Then ...
Nothing
为0,这与Enum
的Nothing
或Undefined
值相匹配。通常,因为我总是将负值分配给错误、错误或不好的值,所以我也会进行比较,比如:
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 ...