2

DirectoryEntryオブジェクトの子を操作したときに、DirectoryEntryオブジェクトを解放する方法がわかりません。すべての子供を解放してから親を解放する必要がありますか、それとも単に親を解放する必要がありますか?

例えば、

using(DirectoryEntry entry = new DirectoryEntry())
{
    foreach (DirectoryEntry childEntry in entry.Children)
    {
        ....
    }   
}

それは十分か?

または、次のような追加のコードが必要です

using(DirectoryEntry entry = new DirectoryEntry())
{
    foreach (DirectoryEntry childEntry in entry.Children)
    {
        using(childEntry)
        {
            ...
        }
    }   
}

4

1 に答える 1

4

列挙されたすべての子を解放する必要があります。

DirectoryEntry.Childrenさらに、ゲッターにアクセスするたびに、新しく作成されたオブジェクトが返されることに注意してください。DirectoryEntry.Children これは、MS独自のガイドライン(メソッドである必要があります)の大まかな違反であるため、うんざりするほどですが、それは真実です。

それで:

  • 子を列挙するたびに、新しいインスタンスを取得します。
  • 親エントリは、列挙子の作成されたインスタンス、および列挙子によって作成された子エントリについては何も知りません。
于 2012-08-23T12:40:17.387 に答える