关于这个主题的另一个话题,因为我厌倦了阅读无数主题以找到我的问题的答案:)
假设我们有以下类:
public class MyClass
{
private const string conString = "connection string";
private int Operation()
{
int count = 0;
using(var con = SqlConnection(conString))
{
string select_cmd = "SELECT * FROM TABLE";
using(var cmd = new SqlCommand(select_cmd, con))
{
using(var reader = cmd.ExecuteReader())
{
while(reader != null && reader.Read())
count++;
}
}
}
return count;
}
}
由于与数据库的连接是在 using 语句中实例化的,因此 con.close() 和最终 con.dispose() 方法将被调用,是否需要为 MyClass 实现 IDisposable?MyClass 超出范围时会被垃圾收集吗?
编辑:
谢谢你的回复,这就是我的想法,但我需要说清楚。还有一个问题。
如果我的类有几个 Operations() 在数据库上做一些工作,从资源消耗的角度来看,拥有一个 SqlConnection 成员,实例化并在类构造函数上打开它并实现 IDisposable 以关闭它而不是更好的做法在每个操作中使用“使用”语句(在每个操作中打开和关闭数据库)?当然,那样我应该只在 using 语句中实例化和使用 MyClass 对象。