Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Active directory 使用;使用;实现IDisposable的每个对象的语句?_Active Directory_Idisposable_Using Statement - Fatal编程技术网

Active directory 使用;使用;实现IDisposable的每个对象的语句?

Active directory 使用;使用;实现IDisposable的每个对象的语句?,active-directory,idisposable,using-statement,Active Directory,Idisposable,Using Statement,我目前正在浏览一些读取Active Directory条目并对其进行操作的代码。由于我不必处理这类东西,我对类(DirectoryEntry,SearchResultCollection,…)进行了F12,我发现它们都实现了IDisposable接口,但我在代码中看不到任何使用块的 在这种情况下,这些是必要的吗(即,我是否应该盲目地重构它们) 关于这一点,我的另一个问题是(代码中有很多实例化的IDisposable对象:IDisposable不是让东西变得非常“丑陋”吗在这种情况下?我的意思是,

我目前正在浏览一些读取Active Directory条目并对其进行操作的代码。由于我不必处理这类东西,我对类(
DirectoryEntry
SearchResultCollection
,…)进行了F12,我发现它们都实现了
IDisposable
接口,但我在代码中看不到任何使用
块的

在这种情况下,这些是必要的吗(即,我是否应该盲目地重构它们)

关于这一点,我的另一个问题是(代码中有很多实例化的
IDisposable
对象:
IDisposable
不是让东西变得非常“丑陋”吗在这种情况下?我的意思是,我喜欢
使用
语句,因为它们基本上可以让我的思维从担心事情中解放出来,但在许多情况下,代码的布局与以下类似:

using (var one = myObject.GetSomeDisposableObject())
using (var two = myObject.GetSomeOtherDisposableObject())
{
  one.DoSomething();
  using (var foo = new DisposableFoo())
  {
    MyMethod(foo);
    using (...)
    using (...)
    {
      ...
    }
  }
}
我觉得由于缩进级别很高(甚至使用
语句堆叠
),这变得非常不可读。但是将其中一些提取到新方法中可能会导致需要传递许多参数,因为“内部”代码通常需要使用
语句在
中创建的对象

在不丢失可读性的情况下,解决这个问题的优雅方法是什么?

对于第一部分,指的是在不处理AD引用时“任务使用的内存不断增加”


对于第二种情况,
using
块是
try/finally
Dispose
块中的
Dispose
调用的语法糖,这是一种替代结构,允许您在一个地方处理所有内容,减少缩进对于第一部分,指的是“任务使用的内存增加”不断地“在不处理AD引用时”-对于第二种情况,
使用
块是
try/finally
的语法糖,在
finally
块中使用Dispose调用,这将是一种替代结构,允许您在一个地方处理所有内容,减少缩进。@stuartd感谢链接,这就是ure看起来很有趣(我必须在一分钟内读完).至于
try/finally
,哎哟!我忘记了,当然我知道它存在,但只是没有进一步思考。通常,有一两个
使用
语句,这不是首选的方式,但有这么多我可以尝试使用它。太糟糕了,它不能自动阻止我忘记
处理我声明的所有内容bove:D请随意加上这个简短的回答!加上这个回答,干杯。