簡體   English   中英

具有接口和內存泄漏的C#多重繼承

[英]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.

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