java idisposable_在C#中实现IDisposable [重复]
這個問題在這里已有答案:
我試圖在示例程序中實現IDisposable . 如果我在using block語句中使用SqlConnection類,它將自動處理它 .
public int testCon()
{
using (SqlConnection conn = new SqlConnection("Conn string"))
{
using (SqlCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT COUNT(1) FROM Carsd";
return (int)cmd.ExecuteScalar();
}
}
}
我創建了一個類并實現了IDisposable . 我在using block語句中創建了一個新實例 .
class Program
{
static void Main(string[] args)
{
testDispose objTestDispose;
using (objTestDispose = new testDispose())
{
objTestDispose.UserName = "testUser";
objTestDispose.PassWord = "testPassword";
}
Console.WriteLine("Check obj of testDispose Class" + objTestDispose.UserName);
Console.WriteLine("Check obj of testDispose Class" + objTestDispose.PassWord);
Console.ReadLine();
}
}
public class testDispose : IDisposable
{
public string UserName { get; set; }
public string PassWord { get; set; }
public void Dispose()
{ }
}
我相信,使用block自動調用dispose方法 . 因此,如果我在使用塊中創建一個新實例,它將在現有的使用塊之后進行配置 . 但是,我仍然能夠在使用block.WHY之外訪問objTestDispose對象?
請建議 .
UDPATE
Mr.BWA ..謝謝你讓我的問題重復 . 但你應該知道我是一名學生并且正在學習 . 我腦子里有這個問題,所以我在這里問過 . **您不能僅為非托管資源說IDisposable接口 . **我也可以刪除托管資源 . 這取決于實際情況 . 按照以下link -
如果您的對象已將250MB System.Drawing.Bitmap(即.NET托管的Bitmap類)分配為某種幀緩沖區,該怎么辦?當然,這是一個托管的.NET對象,垃圾收集器將釋放它 . 但是你真的想留下250MB的內存 - 等待垃圾收集器最終出現并釋放它嗎?如果有一個開放的數據庫連接怎么辦?當然,我們不希望該連接處于打開狀態,等待GC完成對象 . 如果用戶調用了Dispose()(意味著他們不再計劃使用該對象),為什么不擺脫那些浪費的位圖和數據庫連接?所以現在我們將:擺脫非托管資源(因為我們必須),并擺脫托管資源(因為我們希望有所幫助)
總結
以上是生活随笔為你收集整理的java idisposable_在C#中实现IDisposable [重复]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10商店上下载的应用连不上网络怎么
- 下一篇: 【opencv+python】图片的保存