在尝试追踪仅在某些情况下发生的空引用异常的原因时,我遇到了这段代码:
SqlCeDataReader IdValsReader = IdValsCMD.ExecuteReader();
if ((IdValsReader.Read()) && (!IdValsReader.IsDBNull(0)))
{
return string.Format("{0};{1};{2};{3};{4};{5};{6};{7};",
IdValsReader.GetValue(DESCRIPTION_INDEX),
. . .
}
IdValsReader.Close();
...并且想知道我是否应该在IdValsReader.Close()之后添加这一行:
IdValsReader.Dispose();
我确实这样做了,但似乎没有任何区别;我应该把它留下来还是把它剥掉?
答案 0 :(得分:6)
来自MSDN:[Dispose方法]释放DbDataReader使用的资源并调用Close。
因此,一旦你完成阅读器,调用dispose似乎是明智的。更好的是,将它全部包装在Using块中并忘记它。