将HashSet <t>转换为.NET中的数组</t>

时间:2009-10-21 21:06:51

标签: .net arrays hashset

如何转换HashSet&lt; T&gt;到.NET中的数组?

4 个答案:

答案 0 :(得分:45)

使用HashSet<T>.CopyTo方法。此方法将项目从HashSet<T>复制到数组。

所以给定一个名为HashSet<String>的{​​{1}}你会做这样的事情:

stringSet

答案 1 :(得分:20)

如果您的意思是System.Collections.Generic.HashSet,那么它很难,因为该类在框架3.5之前不存在。

如果你的意思是你在3.5上,那么只需使用ToArray,因为HashSet实现了IEnumerable,例如

using System.Linq;
...
HashSet<int> hs = ...
int[] entries = hs.ToArray();

如果你有自己的HashSet类,很难说。

答案 2 :(得分:0)

我想

function T[] ToArray<T>(ICollection<T> collection)
{
    T[] result = new T[collection.Count];
    int i = 0;
    foreach(T val in collection)
    {
        result[i++] = val;
    }
}

与任何ICollection<T>实施一样。

实际上,因为您必须引用System.Core来使用HashSet<T>类,您也可以使用它:

T[] myArray = System.Linq.Enumerable.ToArray(hashSet);

答案 3 :(得分:0)

现在,您可以使用List<T>构造函数(列表是现代Arrays)更加简单。 例如,在PowerShell中:

$MyNewArray = [System.Collections.Generic.List[string]]::new($MySet)