作爲我厭倦了閱讀了無數話題找到一個答案,我的問題:)非託管資源,IDisposable接口和自定義類型
主題的另一個話題假設我們有下面的類:
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()和condispose()方法將被調用,是否需要爲MyClass實現IDisposable? MyClass在超出範圍時會被垃圾收集嗎?
編輯:
謝謝您的回覆,這就是我的想法,但我需要說清楚。還有一個問題。
如果我的類有幾個Operations()在數據庫上做一些工作,從資源消耗的角度來看,有一個SqlConnection成員是更好的做法,在類構造函數中實例化並打開它並實現IDisposable關閉它而不是在每個操作中使用「using」語句(在每個操作中打開和關閉數據庫)? 這種方式我只應該在使用語句中實例化和使用MyClass對象。
查看我的更新回答 – 2012-04-24 15:44:39