让我们举个例子:

using (var someObject = new SomeObject())
{
    var someOtherObject = new SomeOtherObject();
    someOtherObject.someMethod();
}
SomeOtherObject 还实现了 IDisposable。
当 SomeObject 被释放时, SomeOtherObject 也会被释放吗? SomeOtherObject 会发生什么?
(SomeObject的Dispose方法中没有实现SomeOtherObject的处置)

最佳答案

不会。只会处理 using 子句中的字段。在你的情况下只有 someObject。

基本上该代码被翻译成

var someObject = null;
try
{
  someObject = new SomeObject()

  var someOtherObject = new SomeOtherObject();
  someOtherObject.someMethod();
}
finally
{
  if (someObject != null )
  someObject.Dispose()
}

关于c# - 使用 "using"关键字时处理的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2386057/

10-15 22:43