2

当我与孩子一起工作时,我不确定如何释放 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每次访问它的 getter 时都会返回新创建的对象。这很令人作呕,因为它粗暴地违反了 MS 自己的准则(DirectoryEntry.Children 必须是一种方法),但这是事实。

所以:

  • 每次枚举孩子时,都会得到新的实例;
  • 父条目对枚举器的创建实例和由枚举器创建的子条目一无所知。
于 2012-08-23T12:40:17.387 回答