哪个更好,关闭datareader或将其设置为null?

时间:2011-06-15 11:02:28

标签: datareader

我想知道以下操作的优点和缺点

我最好将datareader设置为null,而不是调用close方法。如果这样做有什么好处,那么使用它会有什么问题?。

1 个答案:

答案 0 :(得分:3)

您应该使用using语句:

using (var reader = sqlCommand.ExecuteReader())
{
  // do stuff
}

这样,即使在“do stuff”块中引发了异常,您也确信阅读器已关闭(处置)。

有关完整示例,请参阅this MSDN page


更新(关于您的评论):

using语句实际上只是一个try-finally块,以确保读者在每种情况下都被处理(关闭)。例如。上面的代码相当于:

SqlDataReader reader = null;
try
{
  reader = sqlCommand.ExecuteReader();
}
finally
{
  reader.Dispose(); // closes the reader
}