gpt4 book ai didi

c# - CA1063 修改 Dispose() 使其调用 Dispose(true),然后在当前对象实例上调用 GC.SuppressFinalize,然后返回

转载 作者:行者123 更新时间:2023-12-04 01:52:11 26 4
gpt4 key购买 nike

我有这门课:

public abstract class ImplementsIDisposable : IDisposable
{
public abstract void Dispose();

private class InnerClass : ImplementsIDisposable
{
private bool disposedValue;

public override void Dispose()
{
if (!disposedValue)
{
doSomething();
disposedValue = true;
}

GC.SuppressFinalize(this);
}
}
}

并且代码分析正在抛出此消息:

CA1063 Modify Dispose() so that it calls Dispose(true), then calls GC.SuppressFinalize on the current object instance and then returns.



和这个:

CA1063 Ensure that Dispose() is declared as public and sealed.



都在这一行:
public abstract void Dispose();

莫非它要 Dispose()将在 ImplementsIDisposable 中实现而不是 InnerClass ?

最佳答案

没有理由public Dispose()应该是虚拟的,而不是抽象的。

您需要检查处置模式并正确实现它。警告提示你应该如何做,但它们可能相当神秘,除非你知道模式是如何开始的。

您可以阅读有关处置模式的信息 here ,比较简单。

当然,不要错过 this canonical SO answer就此主题而言。

关于c# - CA1063 修改 Dispose() 使其调用 Dispose(true),然后在当前对象实例上调用 GC.SuppressFinalize,然后返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52504258/

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