gpt4 book ai didi

vb.net - 为什么我无法检查 'DateTime' 是否为 'Nothing' ?

转载 作者:行者123 更新时间:2023-12-03 05:18:09 25 4
gpt4 key购买 nike

在 VB.NET 中,有没有办法将 DateTime 变量设置为“未设置”?为什么可以将 DateTime 设置为 Nothing,但不能检查它是否为 Nothing?例如:

Dim d As DateTime = Nothing
Dim boolNotSet As Boolean = d Is Nothing

第二条语句抛出此错误:

'Is' operator does not accept operands of type 'Date'. Operands must be reference or
nullable types.

最佳答案

在我看来,这是 VB.Net 最大的混淆来源之一。

Nothing在 VB.Net 中相当于 default在 C# 中:给定类型的默认值。

  • 对于值类型,这本质上相当于“零”:0对于 Integer , False对于 Boolean , DateTime.MinValue对于 DateTime ,...
  • 对于引用类型,它是 null值(一个引用,嗯,什么也没有)。

声明d Is Nothing因此相当于d Is DateTime.MinValue ,这显然无法编译。

解决方案:正如其他人所说

  • 使用 DateTime? (即 Nullable(Of DateTime) )。这是我首选的解决方案。
  • 或者使用d = DateTime.MinValue或同等 d = Nothing

在原始代码的上下文中,您可以使用:

Dim d As DateTime? = Nothing
Dim boolNotSet As Boolean = Not d.HasValue

更全面的解释可以在 Anthony D. Green's blog 上找到。

关于vb.net - 为什么我无法检查 'DateTime' 是否为 'Nothing' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5869661/

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