[英]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。
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.