[英]C#: How do you add a destructor to a custom made class?
如何在C#中定制的類中添加析構函數,以便在不再需要時將其銷毀?
不要使用析構函數。 請改用Dispose()和Finalize()。
這是關於這個主題的一篇非常好的文章: 何時以及如何在C#中使用Dispose和Finalize
析構函數不用於銷毀對象,用於在銷毀對象時清理已使用的資源。 析構函數通常用於清理任何非托管資源,例如使用Interop / p / invoke時。
class Person
{
// Destructor
~Person()
{
// Cleanup resources that the object used here.
}
}
要小心!!! 您應盡量避免在C#中使用析構函數。
當您的代碼是:
class Person
{
// Destructor
~Person()
{
// Clean-up resources that the object used here.
}
}
編譯器為您生成此代碼:
class Person
{
// Destructor
public override void Finalize()
{
// your clean up
base.Finalize();
}
}
如您所見,您只是實現了Finalize方法。 在.Net平台中,Finalize方法的錯誤實現會使您的應用程序出現內存泄漏,如果正確實現,則使用Finalize方法實現的對象需要釋放2個GC調用。
如果你來自C ++,你應該忘記一個析構函數的想法,你不需要它們GC應該照顧你正常的類。
~className(){}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.