Вот что я вижу в Отражатель :
Public Shared Function IsDate(ByVal Expression As Object) As Boolean
Dim time As DateTime
If (Expression Is Nothing) Then
Return False
End If
If TypeOf Expression Is DateTime Then
Return True
End If
Dim str As String = TryCast(Expression,String)
Return ((Not str Is Nothing) AndAlso Conversions.TryParseDate(str, (time)))
End Function
Теперь возникает вопрос: если передано Date
(ключевое слово VB.NET для DateTime
значений), может ли этот метод когда-либо вернуть false?
номер
If (Expression Is Nothing)
Это никогда не будет истинным для типа значений в штучной упаковке.
If TypeOf Expression Is DateTime
Это всегда будет истинным, если метод явно передан Date
.
Даже если TypeOf A Is B
вернул false, когда B
является подклассом A
(а это не так), вы можете все еще предположить, что это всегда будет возвращать true с DateTime
, так как тип значения, не может быть унаследован.
Значит, ты в порядке.
Мое лучшее предположение состоит в том, что этот код первоначально назывался IsDate
на String
или Object
, который не был строго типизирован; в какой-то момент кто-то должен был обновить свойство SelectedDate
, чтобы оно было напечатано как Date
, не удосужившись обновить этот код проверки.