我有以下一段C#代码
iSomeObject.MyPoint(SomeConstants.cpU, 2,
myInterface.MySystem.MyCustomType == OtherConstants.cpProjected ? Constants.cpU : Constants.cpT,
1, ref t1, ref t2, ref t3);当我运行我的专有分析工具时,它显示myInterface.MySystem导致了资源泄漏。
class MyClass:MyInterface,IDisposable
{}
MyInterface myInterface = new MyClass();我显式地通过将实例myInstance转换回IDisposable并对其调用Dipose()方法来处理它。
现在,在myInterface ( MySystem )上调用MySystem属性的get方法,它的类型为IExampleInterface,其进一步实现如以下代码所示:
class ExampleClass:IExampleClass,IDisposable
{}我不确定在myInterface上调用Dipose()方法是否也会释放由MySystem创建的资源,或者我是否需要显式地对其调用Dispose()方法。但是所有的事情都发生在IF语句条件中,我不确定如何处理这种情况,让我的代码处理掉所有的可处置对象,换句话说,我不确定在这种情况下的C#语法,以及在这种情况下如何处理处置概念。
任何建议都将不胜感激。
发布于 2015-08-25 04:33:12
如果MySystem是一个IDisposable对象,那么您的类应该在它的Dispose实现中处理该对象。
否则,修复您的静态分析工具。
https://stackoverflow.com/questions/32191131
复制相似问题