gpt4 book ai didi

c# - 我应该如何继承IDisposable?

转载 作者:IT王子 更新时间:2023-10-29 04:30:48 25 4
gpt4 key购买 nike

已更改类名以保护无辜者

如果我有一个名为 ISomeInterface 的接口(interface)。我还有继承接口(interface)的类,FirstClass 和 SecondClass。 FirstClass 使用必须处理的资源。 SecondClass 没有。

那么问题来了,我应该从哪里继承IDisposable呢?以下两个选项似乎都不太理想:

1) 让FirstClass继承IDisposable。然后,任何处理 ISomeInterfaces 的代码都必须知道是否要释放它们。这对我来说就像紧密耦合。

2) 使 ISomeInterface 继承 IDisposable。然后,任何继承自它的类都必须实现 IDisposable,即使没有可处置的东西。除评论外,Dispose 方法基本上是空白的。

#2 对我来说似乎是正确的选择,但我想知道是否有其他选择。

最佳答案

如果抽象实体(接口(interface)或抽象类)可能有合理的机会需要一次性使用,则应该实现它。 Stream ,例如自身不需要IDisposableIEnumerator<T> 也没有...

抽象基类可能更简单,因为您可以拥有 Dispose() 的默认(空)实现然后,可能还有终结器/Dispose(bool) 模式,即

~BaseType() => Dispose(false);

protected virtual void Dispose(bool disposing)
{
}

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

关于c# - 我应该如何继承IDisposable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1834263/

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