返回一次性物体并获取CA2000警告



我试图将xmlnodereader返回另一个功能,但获取CA2000警告

XmlNodeReader obj =new XmlNodeReader(section);
return ser.method(obj);

如果我使用以下代码,它会正常工作吗?警告是被掩盖的,但不确定是否会影响逻辑。

XmlNodeReader tempObj =new XmlNodeReader(section);
XmlNodeReader retObj=null;
retObj = tempObj;
tempObj.Dispose();
return ser.method(retObj);

好吧,我们不知道ser.method做什么,但是将被抛弃的对象传递到method对我来说似乎是一个坏主意。基本上,您的"修复"很不好。

这里有三种可能性(可能是其他可能性,但这些都是主要的(:

  • ser.method处理其参数本身。(这可能是一个坏主意,但可能会这样。(在这种情况下,您的原始代码很好。
  • ser.method不处理其参数,但它返回依赖读者仍然不被处置的东西
  • ser.method不处理其参数,并返回不需要读者保持打开的东西

我希望最后一个是这种情况,在这种情况下,您应该将代码更改为:

using (XmlNodeReader reader = new XmlNodeReader(section))
{
    return ser.method(reader);
}

相关内容

  • 没有找到相关文章

最新更新