gpt4 book ai didi

c# - IDispose 对象是否可以没有可用的 Dispose 方法

转载 作者:行者123 更新时间:2023-12-02 13:15:45 26 4
gpt4 key购买 nike

我正在使用FileHelpers在一个项目中,以及 MultiRecordEngine

public sealed class MultiRecordEngine
: EventEngineBase<object>, IEnumerable, IDisposable

此类实现了IDisposable,但没有公共(public)Dispose方法...

MultiRecordEngine eng = null;
eng.Dispose(); // <---- Results in compilation error

检查this class code on GitHub我可以在这里看到显式实现的方法,第 913 行:

void IDisposable.Dispose()
{
Close();
GC.SuppressFinalize(this);
}

那么...为什么我无法调用该方法?这是有意为之的吗?如果是的话,这是一个好的做法吗?在什么情况下?

最佳答案

它是显式实现的,因此您需要转换为IDisposable:

((IDisposable)eng).Dispose();

显式实现的成员只能通过接口(interface)访问,而不能通过实现类访问。

关于c# - IDispose 对象是否可以没有可用的 Dispose 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18338425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com