我使用VB.Net
,Visual Studio 2010
,.Net version 4.5.50938 SP1Rel
。日期比較myDateTime.Equals(DateTime.MinValue)不能在VB.Net中工作
當DateTime參數爲空時,我看到傳遞的值是#12:00:00 AM#
,它基本上是DateTime.MinValue
。假設myDateTime(其爲空)的日期時間參數我傳球,
Dim newDateTime As Nullable(Of DateTime) = If(myDateTime.Equals(DateTime.MinValue), Nothing, myDateTime)
使得newDateTime的值作爲「#12:00:00 AM#
」,而不是沒有的。我證實If條件返回true。誰能告訴我爲什麼Nullable(Of DateTime)不是Nothing?
此外,下面的代碼工作,並沒有進入If循環。
Dim newDateTime As Nullable(Of DateTime) = Nothing
If (Not myDateTime.Equals(DateTime.MinValue)) Then
newDateTime = myDateTime
End If
其實只是改變「myDateTime」爲可空日期還修復了問題 - 因此它可以在不改變'Nothing'的情況下解決,問題在於VB中的'Nothing'是不明確的 - 有時表示空引用值,有時表示值類型的默認值。 –
這不是一個錯誤。由於兩邊需要具有相同的類型,所以If返回DateTime。因此,編譯器會執行如下操作:If myDateTime.Equals(DateTime.MinValue),CType(Nothing,DateTime),myDateTime) –
@DaveDoknjas將myDateTime更改爲可爲空的日期使得兩個返回值的類型相同。 – Arman