可以';t测试C#程序中的Null哈希表值

本文关键字:Null 哈希表 程序 测试 可以 | 更新日期: 2023-09-27 18:30:08

我的ASP.Net 4.0网页中有一个名为EmployeeInformation的哈希表(用C#编写),我想检查哈希表中的特定项("DateEff")是否为null值。当我使用调试器遍历代码时,我看到EmployeeInformation["DateEff"]的值为{Null}。然而,当我遇到这种情况时:

if (EmployeeInformation["Context"].ToString() != "Existing" && EmployeeInformation["DateEff"] != null && EmployeeInformation["DateEff"].ToString() != "")
     <do something here>

我的代码看到这三个条件都是真的,并继续到代码的"在这里做点什么"行。我试过使用

string.IsNullOrEmpty(EmployeeInformation["DateEff"])

同样,但结果是一样的。我还检查了EmployeeInformation是否包含键DateEff,它确实包含。有人知道为什么会发生这种事吗?


根据MethodMan下面的评论,我回去看看我是如何填充哈希表的。我在做什么:

string strDateHired = txtDateHired.Text;
            if (strDateHired == string.Empty)
                dtDateHired = SqlDateTime.Null;
            else
                dtDateHired = Convert.ToDateTime(strDateHired);
            EmployeeInformation.Add("DateEff", dtDateHired);

所以问题是我的值不是null,而是SqlDateTime.null。但是我该如何测试呢?我无法将EmployeeInformation["DateEff"]转换为DateTime,因为它是空的。

可以';t测试C#程序中的Null哈希表值

我认为(根据您的澄清)Convert.IsDBNull(DateEff)将是正确的。您将该值设置为DBNull,而不是c#定义的null。

有趣,对吧!?

如果您要求一个您知道从未填充过的伪字段,<do something here>会运行吗?如果是这样的话,我会质疑DataEff是否在你意想不到的时候被填充。