可以';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,因为它是空的。
我认为(根据您的澄清)Convert.IsDBNull(DateEff)
将是正确的。您将该值设置为DBNull,而不是c#定义的null。
有趣,对吧!?
如果您要求一个您知道从未填充过的伪字段,<do something here>
会运行吗?如果是这样的话,我会质疑DataEff是否在你意想不到的时候被填充。