代码检查:返回值应被释放,但方法或函数未使用 [MustDisposeResource] 注解
如果您在调用代码中使用了 [MustDisposeResourceAttribute] (来自 JetBrains.Annotations )来 强制资源释放 ,而从带注解的来源获取资源的方法未处理资源释放,却将其返回给其他调用者,则潜在的资源处理不当问题将传递给调用者。 JetBrains Rider 报告此类情况,并建议使用 [MustDisposeResource] 注解方法,以明确将处理可释放资源的责任委托给调用者:
[MustDisposeResource]
public class HasNativeResources : IDisposable
{
private IDisposable _resource;
public void Dispose()
{
_resource.Dispose();
}
public void Configure()
{
//configure resource
}
}
public class Test
{
HasNativeResources CreateAndConfigure()
{
var resource = new HasNativeResources();
resource.Configure();
return resource;
}
}
[MustDisposeResource]
public class HasNativeResources : IDisposable
{
private IDisposable _resource;
public void Dispose()
{
_resource.Dispose();
}
public void Configure()
{
//configure resource
}
}
public class Test
{
[MustDisposeResource]
HasNativeResources CreateAndConfigure()
{
var resource = new HasNativeResources();
resource.Configure();
return resource;
}
}
最后修改日期: 2025年 9月 26日