Kac*_*che 2 c# sql null object
我正在使用一些运行SQL查询的旧代码作为参考.
在某些时候,它会变成如下:
sqlDataAdapter.Fill(dataSet);
DataRow dataRow = dataSet.Tables[0].Rows[0];
Object obj = dataRow[fieldName];
Run Code Online (Sandbox Code Playgroud)
旧代码确实:
string output;
if (!string.IsNullOrEmpty(obj.ToString())) { output = obj.ToString(); }
else { output = "Not Available"; }
Run Code Online (Sandbox Code Playgroud)
我改为:
output = obj as string ?? "Not Available"
Run Code Online (Sandbox Code Playgroud)
但有时,它破了.正如我所怀疑的那样,当条目是一个时,它正在发生int.int在那些案件中铸造解决了这个问题.
然后,当没有obj[fieldName] int类型的条目时,出现了另一个问题.当我走过调试器时,我惊讶地发现那obj不是null.在VS中,鼠标移除显示它有一个价值{}.
到底是{}什么?我如何对它进行布尔测试?
(在旧代码中,它会在这种情况下.ToString()返回""并按预期工作.)
{并且}打开和关闭大括号并且象征着对象的开始和结束.因此,没有特殊属性的空对象以简写形式描述{}.调试器使用此表示法来帮助您在视觉上区分空对象,空字符串和null.
如果你将鼠标悬停在obj[fieldName]没有条目fieldName,调试器将不关心它,它将显示值obj.你必须使用即时窗口或手表/速表.调试器只会看到你将鼠标悬停在obj上,并假设你指的是数组本身,而不是指定索引处数组的内容.