【发布时间】:2010-10-20 21:54:29
【问题描述】:
我正在使用一些运行 sql 查询的旧代码作为参考。
在某些时候,它会变成这样:
sqlDataAdapter.Fill(dataSet);
DataRow dataRow = dataSet.Tables[0].Rows[0];
Object obj = dataRow[fieldName];
旧代码是这样的:
string output;
if (!string.IsNullOrEmpty(obj.ToString())) { output = obj.ToString(); }
else { output = "Not Available"; }
我把它们改成:
output = obj as string ?? "Not Available"
但有时,它会坏掉。正如我所怀疑的,当条目是int 时,它正在发生中断。在这些情况下转换为 int 解决了这个问题。
当obj[fieldName] int 类型的no 条目出现时,又出现了另一个问题。当我单步调试调试器时,我惊讶地发现obj 不是null。在 VS 中,鼠标悬停显示它有一个值 {}。
{} 到底是什么?如何对其进行布尔测试?
(在旧代码中,在这种情况下,.ToString() 返回"" 并按预期工作。)
【问题讨论】: