首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CA2015:请勿为派生自 MemoryManager<> 的类型定义终结器

CA2015:请勿为派生自 MemoryManager<> 的类型定义终结器

作者头像
用户4268038
发布2022-02-20 19:35:58
发布2022-02-20 19:35:58
2760
举报
文章被收录于专栏:stcnbstcnb

规则 ID

CA2015

类别

可靠性

修复是中断修复还是非中断修复

非中断

原因

为派生自 MemoryManager<T> 的类型定义终结器

规则说明

如果发生将终结器添加到派生自 MemoryManager<T> 的类型的情况,可能表示存在 bug,因为这表明在 Span<T> 中分发的本机资源正在被清除,同时 Span<T> 可能仍在使用该资源。

备注

MemoryManager<T> 类适用于高级方案。 大多数开发人员不需要使用它。

如何解决冲突

若要解决此冲突,请删除终结器定义。

class DerivedClass <T> : MemoryManager<T>

{

public override bool Dispose(bool disposing)

{

if (disposing)

{

_handle.Dispose();

}

}

...

// Violation occurs, remove the finalizer to fix the warning.

~DerivedClass() => Dispose(false);

}

何时禁止显示警告

如果目的是创建用于调试或验证的终结器,则可以禁止显示与此规则的冲突。

相关规则

CA1821:移除空终结器

另请参阅

可靠性规则

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档