簡體   English   中英

C#/ VB.NET using語句實際上對未實現IDisposable的類做任何事情

[英]Does C#/VB.NET using statement actually do anything with classes that do not implement IDisposable

如果我有類似以下內容:

public class Myclass{

//some resources

}

然后在另一堂課中,我執行以下操作:

using(Myclass myclass = new Myclass()) {
// do things with myclass instance

}

在這種情況下,using語句是否實際提供任何使用? Myclass尚未實現IDisposable接口,因此沒有要調用的Dispose()方法。 我在正確考慮嗎?

如果您的類未實現IDisposable則不能在using語句中使用它。 這將是編譯時錯誤。

除此之外, using語句轉換為try-finally塊,並在using語句結束時調用Dispose (即使在發生異常的情況下) CLR 實際處置對象沒有什么神奇的事情,這完全取決於Dispose的實現。 您可以有一個空的Dispose方法實現,並且不會起作用。

您不能與不能實現IDisposable類型一起using 您將得到一個編譯器錯誤。 而已。

  • MSDN C# :...所有此類類型都必須實現IDisposable接口。
  • MSDN VB.NET ...必需。 資源的類別。 該類必須實現IDisposable接口...

是您遇到的CS1674編譯器錯誤。

暫無
暫無

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

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