【发布时间】:2015-01-07 14:40:00
【问题描述】:
我已经编写了以下代码来执行此操作,但有没有更优雅的方法?
我有 2 个可为空的枚举。我想将它们相互比较,其中一个或两个都可以为空。我必须单独测试是否相等并测试空条件。有没有更好的办法?
Private Class a
Public Enum MyColour
Red
Blue
End Enum
Public Property OriginalColour As MyColour?
Public Property NewColour As MyColour?
Public ReadOnly Property HasColourChanged As Boolean
Get
If (OriginalColour.HasValue And NewColour.HasValue) Then 'Both have values so test
'Test if the values are the same
If OriginalColour.Value = NewColour.Value Then
Return False
Else
Return True
End If
End If
'Either one or both values are null
If OriginalColour.HasValue Xor NewColour.HasValue Then
Return True
Else
Return False
End If
End Get
End Property
End Class
【问题讨论】:
-
您想知道属性何时更改或它们是否不同?因为您的属性只是表明您想知道颜色是否发生了变化
-
只是好奇,因为如果您关心的只是通知颜色已更改的内容,您应该查看 INotifyPropertyChanged:msdn.microsoft.com/en-us/library/…
-
Google
compare nullable并点击第二个链接。就这么简单。 -
比尔,我对物业的措辞很糟糕。我想知道它们是否不同。
标签: vb.net enums nullable equality