我是否需要在这两个 XmlDataSource objects 上调用 .Dispose()? "CA2000 Dispose objects before losing scope" 告诉我 .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()
,其中 returns 和 XmlDataSource
。 CA2000 说我应该 Dispose()
XmlDatasource 在丢失范围之前。
- 我应该将每个
XmlDataSource
包装在 using 语句中吗?
- 我应该在下层使用
try
/catch
/finally
而在上层使用 using
吗?
- 我实际上有两个
XmlDataSource
objects,一个在上层方法中,一个在下层方法中吗?
我在这方面的语言行为有点模糊,我想成为一个好孩子。
void Foo()
{
XmlDataSource xds = GetXmlDataSource();
}
XmlDataSource GetXmlDataSource()
{
XmlDataSource xmlDataSource = new XmlDataSource();
return xmlDataSource;
}
Should I wrap each XmlDataSource in a using statement?
如果超出该方法的范围,是的,您应该这样做。顺便说一句,您还可以对来自其他方法的变量使用 using
。
Should I use try/catch/finally in the lower one?
是也不是。 XmlDataSource
不应被丢弃,因为您打算在其他方法中使用它。如果你有一个异常会阻止变量被传递,你应该处理它。
Should I use using in the upper one?
是的,你应该。此代码将完成这项工作。
using (XmlDataSource xds = GetXmlDataSource())
{ }
Do I effectively have two XmlDataSource
objects, one in the upper method and one in the lower method?
不,你有一个。这就是为什么你不应该处理较低的那个。有一个引用从一种方法传递到另一种方法。
1) 只把最终用法包装在一个using中。
2)不,一个using就足够了(注意using的底层实现是一个try/finally)。
3) 你只有一个对象实例。
在我极其简化的代码示例中,我的 Foo() 方法调用 GetXmlDataSource()
,其中 returns 和 XmlDataSource
。 CA2000 说我应该 Dispose()
XmlDatasource 在丢失范围之前。
- 我应该将每个
XmlDataSource
包装在 using 语句中吗? - 我应该在下层使用
try
/catch
/finally
而在上层使用using
吗? - 我实际上有两个
XmlDataSource
objects,一个在上层方法中,一个在下层方法中吗?
我在这方面的语言行为有点模糊,我想成为一个好孩子。
void Foo()
{
XmlDataSource xds = GetXmlDataSource();
}
XmlDataSource GetXmlDataSource()
{
XmlDataSource xmlDataSource = new XmlDataSource();
return xmlDataSource;
}
Should I wrap each XmlDataSource in a using statement?
如果超出该方法的范围,是的,您应该这样做。顺便说一句,您还可以对来自其他方法的变量使用 using
。
Should I use try/catch/finally in the lower one?
是也不是。 XmlDataSource
不应被丢弃,因为您打算在其他方法中使用它。如果你有一个异常会阻止变量被传递,你应该处理它。
Should I use using in the upper one?
是的,你应该。此代码将完成这项工作。
using (XmlDataSource xds = GetXmlDataSource())
{ }
Do I effectively have two
XmlDataSource
objects, one in the upper method and one in the lower method?
不,你有一个。这就是为什么你不应该处理较低的那个。有一个引用从一种方法传递到另一种方法。
1) 只把最终用法包装在一个using中。 2)不,一个using就足够了(注意using的底层实现是一个try/finally)。 3) 你只有一个对象实例。