无法在 C# 程序中测试 Null 哈希表值
Can't test for Null hashtable value in C# program
我的 ASP.Net 4.0 网页(用 C# 编写)中有一个名为 EmployeeInformation 的哈希表,我想检查该哈希表中的特定项目 ("DateEff") 是否具有空值。当我使用调试器遍历代码时,我看到 EmployeeInformation["DateEff"] 的值为 {Null}。但是,当我遇到这种情况时:
if (EmployeeInformation["Context"].ToString() != "Existing" && EmployeeInformation["DateEff"] != null && EmployeeInformation["DateEff"].ToString() != "")
<do something here>
我的代码发现所有三个条件都为真并继续到 "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);
所以问题是我的值不为空,它是 SqlDateTime.Null。但是我该如何测试呢?我无法将 EmployeeInformation["DateEff"] 转换为 DateTime,因为它是空的。
如果您要求输入一个您知道从未填充过的虚假字段,<do something here>
会 运行 吗?如果是这样,我会质疑 DataEff 是否在您不期望的情况下被填充。
我认为(根据您的说明)Convert.IsDBNull(DateEff)
是正确的。您将该值设置为 DBNull,而不是 c# 定义的 null。
有趣,对吧!?
我的 ASP.Net 4.0 网页(用 C# 编写)中有一个名为 EmployeeInformation 的哈希表,我想检查该哈希表中的特定项目 ("DateEff") 是否具有空值。当我使用调试器遍历代码时,我看到 EmployeeInformation["DateEff"] 的值为 {Null}。但是,当我遇到这种情况时:
if (EmployeeInformation["Context"].ToString() != "Existing" && EmployeeInformation["DateEff"] != null && EmployeeInformation["DateEff"].ToString() != "")
<do something here>
我的代码发现所有三个条件都为真并继续到 "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);
所以问题是我的值不为空,它是 SqlDateTime.Null。但是我该如何测试呢?我无法将 EmployeeInformation["DateEff"] 转换为 DateTime,因为它是空的。
如果您要求输入一个您知道从未填充过的虚假字段,<do something here>
会 运行 吗?如果是这样,我会质疑 DataEff 是否在您不期望的情况下被填充。
我认为(根据您的说明)Convert.IsDBNull(DateEff)
是正确的。您将该值设置为 DBNull,而不是 c# 定义的 null。
有趣,对吧!?