ハッシュセットを変換< T> .NETの配列
質問
HashSet< T>を変換するにはどうすればよいですか? .NETの配列?
解決
HashSet< T> .CopyTo
<を使用します。 / a>メソッド。このメソッドは、アイテムを HashSet&lt; T&gt;
から配列にコピーします。
stringSet
という HashSet&lt; String&gt;
を指定すると、次のようになります:
String[] stringArray = new String[stringSet.Count];
stringSet.CopyTo(stringArray);
他のヒント
System.Collections.Generic.HashSetを意味する場合、そのクラスはフレームワーク3.5より前には存在しなかったため、やや困難です。
3.5を使用している場合、HashSetはIEnumerableを実装しているため、ToArrayを使用します。
using System.Linq;
...
HashSet<int> hs = ...
int[] entries = hs.ToArray();
独自のHashSetクラスがある場合、言うのは難しいです。
推測
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&lt; T&gt;
実装。
実際には、 HashSet&lt; T&gt;
クラスを使用するには System.Core
を参照する必要があるため、使用することもできます。
T[] myArray = System.Linq.Enumerable.ToArray(hashSet);
List&lt; T&gt;
コンストラクタを使用すると、さらに簡単に実行できます(リストは最新の配列:)。
例:PowerShellで:
$MyNewArray = [System.Collections.Generic.List[string]]::new($MySet)
所属していません StackOverflow