首页 > 解决方案 > 可以对枚举值使用比较运算符吗?

问题描述

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

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

这看起来与Enum Framework Design Guidelines一致。最近,我开始确保UndefinedorNothing值也获得分配的 0 值,以便如下比较正常工作:

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

Nothing为 0,这与 的NothingUndefined值匹配Enum。通常,因为我总是将负值分配给错误、错误或某种错误的值,所以我也会进行如下比较:

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 的所有值进行一次测试。

这是一种好习惯,还是我永远不应该在数字上比较枚举?是否有理由避免这种情况?

标签: vb.netenumscomparison-operators

解决方案


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

If yourvalue = enu.Undefined then ...

推荐阅读