如何将 HashSet<T> 转换为 .NET 中的数组?
问问题
38410 次
4 回答
60
使用HashSet<T>.CopyTo
方法。此方法将项目从 复制HashSet<T>
到数组。
所以给你一个HashSet<String>
电话stringSet
你会做这样的事情:
String[] stringArray = new String[stringSet.Count];
stringSet.CopyTo(stringArray);
于 2009-10-21T21:08:02.593 回答
29
如果您的意思是 System.Collections.Generic.HashSet,这有点困难,因为该类在框架 3.5 之前不存在。
如果您的意思是您使用的是 3.5,则只需使用 ToArray,因为 HashSet 实现了 IEnumerable,例如
using System.Linq;
...
HashSet<int> hs = ...
int[] entries = hs.ToArray();
如果你有自己的 HashSet 类,那就很难说了。
于 2009-10-21T21:21:49.463 回答
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);
于 2009-10-21T21:11:33.673 回答
0
现在您可以使用List<T>
构造函数更简单地完成它(列表是现代数组:)。例如,在 PowerShell 中:
$MyNewArray = [System.Collections.Generic.List[string]]::new($MySet)
于 2019-02-11T15:18:30.107 回答