代表 .NET 3.5 HashSet的最佳 .NET 2.0 类型是什么?

发布于 2024-09-01 11:40:26 字数 391 浏览 3 评论 0原文

我正在为自己编写一个类库来管理 Active Directory。

我有一个界面:

Public Interface ISourceAnnuaire(Of T as {IGroupe, ITop, IUniteOrganisation, IUtilisateur})
    Readonly Property Changements As Dictionary(Of T, HashSet(Of String))
End Interface

此 Changements 属性用于在内存中保存作为源的一部分的特定元素上发生的更改。

但是,我仍然坚持使用 .NET Framework 2.0。 HashSet(Of String) 最接近的 .NET 2.0 是什么?

I'm writing myself a class library to manage Active Directory.

I have an interface:

Public Interface ISourceAnnuaire(Of T as {IGroupe, ITop, IUniteOrganisation, IUtilisateur})
    Readonly Property Changements As Dictionary(Of T, HashSet(Of String))
End Interface

This Changements property is used to save in memory the changes that occur on a particular element that is part of the source.

However, I am stuck with .NET Framework 2.0. What would be the closest .NET 2.0 for HashSet(Of String)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

抠脚大汉 2024-09-08 11:40:26

要么使用非通用的Hashtable,要么破解字典并使用它的密钥集合。

Public class HashSetHack<T> : //Whatever collection interfaces you need.
{
    private readonly Dictionary<T, object> dict = new Dictionary<T, object>();

    //whatever code you need to wrap the interfaces using dict.Keys eg:

    public void Add(T value)
    {
      dict.add(value, null);
    }
}

Either use the non-generic Hashtable or hack a dictionary and use it's key collection.

Public class HashSetHack<T> : //Whatever collection interfaces you need.
{
    private readonly Dictionary<T, object> dict = new Dictionary<T, object>();

    //whatever code you need to wrap the interfaces using dict.Keys eg:

    public void Add(T value)
    {
      dict.add(value, null);
    }
}
后知后觉 2024-09-08 11:40:26

我将创建自己的 HashSet 类,并在幕后使用具有空值的字典(仅使用键)。

I would create my own HashSet class and behind the scenes use a Dictionary with empty values (only use keys).

娇纵 2024-09-08 11:40:26

这是一种特别灵活的方法:

public abstract class UniqueSet<T, TDictionary> : ICollection<T>
    where TDictionary : IDictionary<T, byte> {

    protected TDictionary _internalDictionary;

    protected UniqueSet(TDictionary dictionary) {
        _internalDictionary = dictionary;
    }

    // implement the ICollection<T> interface
    // using your internal dictionary's Keys property

    // for example:
    public void Add(T value) {
        _internalDictionary.Add(value, 0);
    }

    // etc.

}

public class UniqueSet<T> : UniqueSet<T, Dictionary<T, byte>> {

    public UniqueSet() : base(new Dictionary<T, byte>()) { }

}

您会问为什么使用抽象基类?那么,通过这种方法,您还可以实现一个 SortedUniqueSet,其中 SortedList 作为其内部集合(这可以实现 IList) - 实际上无需编写更多代码。您还可以利用您碰巧发现的任何其他奇特的 IDictionary 实现(如果您选择的话)。

Here's a particularly flexible approach:

public abstract class UniqueSet<T, TDictionary> : ICollection<T>
    where TDictionary : IDictionary<T, byte> {

    protected TDictionary _internalDictionary;

    protected UniqueSet(TDictionary dictionary) {
        _internalDictionary = dictionary;
    }

    // implement the ICollection<T> interface
    // using your internal dictionary's Keys property

    // for example:
    public void Add(T value) {
        _internalDictionary.Add(value, 0);
    }

    // etc.

}

public class UniqueSet<T> : UniqueSet<T, Dictionary<T, byte>> {

    public UniqueSet() : base(new Dictionary<T, byte>()) { }

}

Why the abstract base class, you ask? Well, with this approach you could also implement, for example, a SortedUniqueSet<T> with SortedList<T, byte> as its internal collection (and this could implement IList<T>) -- without having to write practically any more code. You could also utilize any fancy other implementations of IDictionary<TKey, TValue> you ever happen to find (if you so chose).

尾戒 2024-09-08 11:40:26

Power Collections 库中的 Set 类的行为几乎与 <代码>HashSet。它适用于.NET 2.0。

The Set<T> class in the Power Collections library behaves almost identically to HashSet<T>. It works with .NET 2.0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文