2011-02-09 58 views
0

一個問題,這是建立在To "new" or not to "new"創建新的對象,然後重新分配

Foo object1 = new Foo(); 
// some operations later ... 
object1 = new Foo(); 

就是我試圖做的最好?如果Foo實現了Idispoable,那麼在第二次調用新操作符之前是否需要調用dispose?

+1

我希望你在發現引用的問題,OP只是不理解C#語法?不要做他做的事。 – 2011-02-09 04:00:33

回答

3

是的,你在這個例子中做的很好。

object1變量僅僅是對Foo類型的對象的引用。在第一個new分配之後,它指的是Foo的一個特定實例;在第二個new賦值之後,它指向一個完全不同的實例(並且原始實例變爲符合垃圾回收的條件,假設沒有其他引用它的地方)。

是的,如果Foo工具IDisposable那麼你應該處理它,最好使用using塊,雖然我個人的偏好是使用單獨的using變量對每個塊:

using (Foo first = new Foo()) 
{ 
    // do something 
} 

using (Foo second = new Foo()) 
{ 
    // do something else 
} 
1

一般來說,如果一個類實現了IDisposable,那麼建議確保Dispose()被調用。這幾乎總是正確的做法。

+1

我會更強烈地說:「如果一個類實現了IDisposable,你應該調用Dispose()」最好是,儘可能使用using語句包裝 – 2011-02-09 04:00:34