gpt4 book ai didi

c# - 为类或接口(interface)声明 IDisposable?

转载 作者:IT王子 更新时间:2023-10-29 03:55:37 27 4
gpt4 key购买 nike

从以下情况开始:

public interface ISample
{
}

public class SampleA : ISample
{
// has some (unmanaged) resources that needs to be disposed
}

public class SampleB : ISample
{
// has no resources that needs to be disposed
}

类 SampleA 应该实现 IDisposable 接口(interface)来释放资源。您可以通过两种方式解决此问题:

<强>1。将需要的接口(interface)添加到类 SampleA 中:

public class SampleA : ISample, IDisposable
{
// has some (unmanaged) resources that needs to be disposed
}

<强>2。将它添加到接口(interface) ISample 并强制派生类实现它:

public interface ISample : IDisposable
{
}

如果将它放入接口(interface)中,则强制任何实现实现 IDisposable,即使它们没有任何可处置的。另一方面,可以很清楚地看到接口(interface)的具体实现需要一个 dispose/using block ,您不需要转换为 IDisposable 来进行清理。这两种方式可能都有更多的优点/缺点...为什么您会建议使用一种方式而不是另一种方式?

最佳答案

Inteface Segregation Principle 之后的 SOLID如果您将 IDisposable 添加到接口(interface)中,您将向不感兴趣的客户端提供方法,因此您应该将其添加到 A。

除此之外,接口(interface)永远不会是一次性的,因为可丢弃性与接口(interface)的具体实现有关,而不是与接口(interface)本身有关。

任何接口(interface)都可以在有或没有需要释放的元素的情况下实现。

关于c# - 为类或接口(interface)声明 IDisposable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10513948/

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