繁体   English   中英

我是否需要在这两个XmlDataSource对象上都调用.Dispose()? “ CA2000在失去作用域之前先处理对象”告诉我.Dispose()

[英]Do I need to call .Dispose() on both of these XmlDataSource objects? “CA2000 Dispose objects before losing scope” tells me to .Dispose() it

在我的极其简化的代码示例中,我的Foo()方法调用GetXmlDataSource() ,该方法返回一个XmlDataSource CA2000说,在丢失范围之前,我应该Dispose() XmlDatasource。

  • 是否应在using语句中包装每个XmlDataSource
  • 我应该在较低的位置使用try / catch / finally在较高的位置using a吗?
  • 我是否有效地拥有两个XmlDataSource对象,一个在上部方法中,一个在下部方法中?

我对这门语言的行为有些模糊,我想成为一个好男孩。

void Foo()
{
    XmlDataSource xds = GetXmlDataSource();
}

XmlDataSource GetXmlDataSource()
{
    XmlDataSource xmlDataSource = new XmlDataSource();
    return xmlDataSource;
}

是否应在using语句中包装每个XmlDataSource?

如果超出该方法的范围,则应该。 您还可以使用using从由其他方式来方法变量。

我应该在下一个中使用try / catch / finally吗?

是的,没有。 不应处置XmlDataSource因为您打算在其他方法中使用它。 如果您有一个异常将阻止传递变量,则应处置它。

我应该在上一个使用use吗?

是的你应该。 此代码将完成工作。

using (XmlDataSource xds = GetXmlDataSource())
{ }

我是否有效地拥有两个XmlDataSource对象,一个在上部方法中,一个在下部方法中?

不,你有一个。 这就是为什么您不应该处置下一个。 有一个引用从一种方法传递到另一种方法。

1)仅将最终用法包装在using中。 2)不,使用就足够了(请注意,使用的基本实现尝试/最终实现)。 3)您只有一个对象实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM