如何转换HashSet< T>到.NET中的数组?
答案 0 :(得分:45)
答案 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)