gpt4 book ai didi

c# - IDisposable 的显式实现

转载 作者:可可西里 更新时间:2023-11-01 07:55:55 27 4
gpt4 key购买 nike

虽然在 SO 上可以找到很多关于 IDisposable 的问答,但我还没有找到答案:

我通常遵循的做法是,当我的一个类拥有一个 IDisposable 对象时,它也会实现 IDisposable 并在拥有的对象上调用 Dispose目的。但是最近我遇到了一个显式实现了 IDisposable 的类,从而阻止我直接调用 Dispose 强制我强制转换它,我觉得这很烦人而且没有必要。

那么问题来了:为什么以及何时要使用 IDisposable 的显式接口(interface)实现?我知道显式实现接口(interface)有非常好的和正当的理由,但关于 IDisposable 的原因对我来说不是很清楚。

最佳答案

我会说显式实现 IDisposable.Dispose 是不寻常的,除非您有替代的等效方法(例如 Close)。

在这种情况下,您的包装类可以调用 Close 而不是强制转换。

一个例子是 Framework <= V3.5 中的 WebResponse 类。有趣的是,.NET 4 中有一个公共(public) Dispose 方法,所以也许 Microsoft 现在已经决定显式实现可能不是好的做法。

CLR 安全团队的设计工程师 Shawn Farkas 在 MSDN magazine 中写道那个

Although the using block will work with classes that do have an explicit IDisposable implementation, I recommend that classes never implement the interface this way. If you explicitly implement IDisposable, developers who are exploring your object model using IntelliSense® in Visual Studio® will not notice that the object has a Dispose method

关于c# - IDisposable 的显式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5577252/

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