[英]C# multiple inheritance with interfaces and memory leaks
我正在編寫一個C#程序,其中有一個繼承多個接口的類,如下所示
class MyClass:IMyInterface,IExampleInterface,IDisposable
{
}
但是,這樣,IMyInterface或IExampleInterface都不繼承IDisposable。 但是當我創建一個接口實例時
IMyInterfacce myInterface = new MyClass();
並分析我的代碼(使用Coverity工具),我發現存在資源泄漏,並且myInterface對象沒有釋放其在內存中擁有的資源。 雖然我正在使用新的MyClass()實例化MyClass實例,但是盡管MyClass確實如此,但IMyInterface並未實現IDisposable。
那么為什么就“ myInterface”對象而言,我卻在地球上抱怨資源泄漏/內存泄漏。
任何建議都非常歡迎。
當創建一個類並將其分配給接口時,您仍然創建了該類類型的實例。
IMyInterfacce myInterface = new MyClass();
仍然創建一個MyClass
對象,並且myInterface引用一個MyClass
對象。 因此, myInterface
仍然引用需要處理的類的實例。
完成后,您必須將其回退並調用Dispose
:
((IDisposable)myInterface).Dispose();
// Or
((MyClass)myInterface).Dispose();
或者,您可以將其包裝在using語句中:
using (MyClass myClass = new MyClass()) {
MyInterface myInterface = myClass;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.