簡體   English   中英

類成員和使用語句

[英]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可用)

MSDN參考是非常好的IMO

菲爾·哈克(Phil Haack)7年前也寫了一篇深入的文章。

更新到您的編輯

一旦方法調用了dispose方法,如果您嘗試在方法范圍之外使用它,它將拋出異常。 所以,是的,在使用之外引用它是不好的。 確切地說,它將拋出ObjectDisposedException

調用Dispose方法。

using Statement(C#參考)

在objet上調用Dispose方法以清理此對象

我們調用using來清理非托管對象,因為它們不會被GC清理

GC沒有關於非托管對象的信息,因此開發人員必須清理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM