Насколько я понимаю, интерфейсный ресурс освобождается, когда счетчик ссылок на интерфейсе достигает 0.
Рассмотрим следующее приватное поле:
private IMyInterface _field = new DisposableObject()
Должен ли я все еще явно освобождать это поле в классе, например сделать класс реализованным IDisposable
и освободить его на Dispose
? Или он будет освобожден автоматически, потому что я использую интерфейс?
У меня была похожая ситуация в Delphi, и это вызывало утечку памяти, что немного смущало меня, так как я всегда думал, что сопряженные объекты не нужно освобождать (так как они подсчитываются). Чтобы исправить утечку памяти, мне пришлось хранить конкретный тип и освобождать его при уничтожении.
Полагаю, что я на самом деле понимаю, это , почему мне нужно освободить его, если я использую интерфейс?