[英]Class Members and Using Statements
假設定義了一個類:
class TestClass
{
MemoryStream s = new MemorySteam();
void DoStuff()
{
using (s = new MemoryStream())
{
// Do stuff
}
}
}
發生什么s
當使用語句退出范圍是什么?
編輯:在不同的方法中使用s
會有問題嗎?
編輯2:在MemoryStream的第一個實例化中是否會有一個未被引用的對象?
它的Dispose方法被調用。 (請注意,它必須實現IDisposable接口,以便它可以保證Dispose可用)
菲爾·哈克(Phil Haack)7年前也寫了一篇深入的文章。
更新到您的編輯
一旦方法調用了dispose方法,如果您嘗試在方法范圍之外使用它,它將拋出異常。 所以,是的,在使用之外引用它是不好的。 確切地說,它將拋出ObjectDisposedException
調用Dispose方法。
在objet上調用Dispose方法以清理此對象
我們調用using來清理非托管對象,因為它們不會被GC清理
GC沒有關於非托管對象的信息,因此開發人員必須清理
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.