处理或使用关键字 "using"
dispose or use the keyword "using"
我真的需要使用 comm.Dispose()
和 conn.Dispose()
还是直接使用 using
?
using (OdbcConnection conn = new OdbcConnection())
{
conn.Open();
OdbcCommand comm = new OdbcCommand(sql, conn);
OdbcDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
//codes here...
}
conn.Close();
dr.Close();
comm.Dispose();
conn.Dispose();
}
如果是这样的话,我正在考虑这样做。
片段:
using (OdbcConnection conn = new OdbcConnection())
{
conn.Open();
using(OdbcCommand comm = new OdbcCommand(sql, conn))
{
using(OdbcDataReader dr = comm.ExecuteReader())
{
while (dr.Read())
{
//codes here...
}
}
dr.Close();
}
conn.Close();
}
这样会更合适吗?
是的,您可以只使用 using
- 它会为您调用 Dispose
。
您也可以省略 Close
,因为 Dispose
会为您调用它。
using (OdbcConnection conn = new OdbcConnection())
{
conn.Open();
using(OdbcCommand comm = new OdbcCommand(sql, conn))
using(OdbcDataReader dr = comm.ExecuteReader())
{
while (dr.Read())
{
//codes here...
}
}
}
第二个例子是合适的(除了 dr
在调用 Close
时不在范围内 - Dispose
也经常为这些类型调用 Close
东西)作为
using(IDisposable foo = ...)
{
//Do stuff using foo
}
等同于
IDisposable foo = ...;
try
{
//Do stuff using foo
}
finally
{
foo.Dispose();
}
我真的需要使用 comm.Dispose()
和 conn.Dispose()
还是直接使用 using
?
using (OdbcConnection conn = new OdbcConnection())
{
conn.Open();
OdbcCommand comm = new OdbcCommand(sql, conn);
OdbcDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
//codes here...
}
conn.Close();
dr.Close();
comm.Dispose();
conn.Dispose();
}
如果是这样的话,我正在考虑这样做。
片段:
using (OdbcConnection conn = new OdbcConnection())
{
conn.Open();
using(OdbcCommand comm = new OdbcCommand(sql, conn))
{
using(OdbcDataReader dr = comm.ExecuteReader())
{
while (dr.Read())
{
//codes here...
}
}
dr.Close();
}
conn.Close();
}
这样会更合适吗?
是的,您可以只使用 using
- 它会为您调用 Dispose
。
您也可以省略 Close
,因为 Dispose
会为您调用它。
using (OdbcConnection conn = new OdbcConnection())
{
conn.Open();
using(OdbcCommand comm = new OdbcCommand(sql, conn))
using(OdbcDataReader dr = comm.ExecuteReader())
{
while (dr.Read())
{
//codes here...
}
}
}
第二个例子是合适的(除了 dr
在调用 Close
时不在范围内 - Dispose
也经常为这些类型调用 Close
东西)作为
using(IDisposable foo = ...)
{
//Do stuff using foo
}
等同于
IDisposable foo = ...;
try
{
//Do stuff using foo
}
finally
{
foo.Dispose();
}