gpt4 book ai didi

vb.net - 有什么方法可以让 IsDate(Date) 返回 false 吗?

转载 作者:行者123 更新时间:2023-12-02 05:49:15 24 4
gpt4 key购买 nike

我正在检查 VB.net 中的一些代码,并在验证对象中编写了以下内容

If Not IsDate(Entity.SelectedDate) Then
ErrorList.Add(New CValidationError("MainReport", "Please select a weekend date"))

SelectedDate 是日期类型。在我看来,不可能达到这种条件。这是真的吗?

最佳答案

这是我在 Reflector 中看到的内容:

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

如果该方法显式传递日期,则这将始终为真。

即使当 BA 的子类(事实并非如此)时 TypeOf A Is B 返回 false,您也可以 < em>仍然假设这总是返回 true,因为 DateTime 作为值类型,无法继承。

所以你很好。

我最好的猜测是,这段代码最初在非强类型的 StringObject 上调用了 IsDate;在某些时候,某人必须更新了 SelectedDate 属性以将其键入为 Date,而无需更新此验证代码。

关于vb.net - 有什么方法可以让 IsDate(Date) 返回 false 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3302709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com