我是C#/asp.net开发人员,必须在VB/asp.net上工作。
我从VB.NET开始,但是在离开VB.NET多年之后,我对语法感到困惑。

我有两个变量

Dim originalDate as DateTime?
Dim newDate as DateTime?

这两个可为null的日期时间,originalDate都是我从数据库中获取的可为null的日期,并且newDate时间是在代码中设置的,我需要对其进行比较,它们既可以有日期,也可以没有日期,或者既可以有日期,也可以没有日期。

我有一些代码如下:
if origEndDate = origEndDate then

当origEndDate和origEndDate都为“nothing”时,此语句为假(嗯,当我在监视窗口中运行该语句时,它什么也没有返回)!

我不明白为什么会这样,因为在印象中我做一个“=”会比较两个值,并且由于它们相同,所以它肯定是正确的吗?

有人可以解释我做错了吗?我应该像在C#中一样使用什么语法,我可以像上面那样做:
if (origEndDate == origEndDate) { }

它将恢复为真实。

使困惑!

谢谢你的帮助!

最佳答案

尝试originalDate.Equals(newDate)吗?

(不,当两个日期中的任何一个为null时,这都不会导致NRE,因为这些变量实际上是Nullable(Of DateTime)值类型,因此,在将它们装箱之前,它们实际上不是null。)

10-06 04:38