46

HashSet<T> を .NET の配列に変換するにはどうすればよいですか?

4

4 に答える 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 を使用している場合は、HashSet が IEnumerable を実装しているため、ToArray を使用してください。

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 に答える