开发者

Convert a HashSet<T> to an array in .NET

开发者 https://www.devze.com 2022-12-08 22:32 出处:网络
How do I convert a HashSet<T> to 开发者_开发技巧an array in .NET?Use the HashSet<T>.CopyTo method.This method copies the items from the HashSet<T> to an array.

How do I convert a HashSet<T> to 开发者_开发技巧an array in .NET?


Use the HashSet<T>.CopyTo method. This method copies the items from the HashSet<T> to an array.

So given a HashSet<String> called stringSet you would do something like this:

String[] stringArray = new String[stringSet.Count];
stringSet.CopyTo(stringArray);


If you mean System.Collections.Generic.HashSet, it's kind of hard since that class does not exist prior to framework 3.5.

If you mean you're on 3.5, just use ToArray since HashSet implements IEnumerable, e.g.

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

If you have your own HashSet class, it's hard to say.


I guess

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

as for any ICollection<T> implementation.

Actually in fact as you must reference System.Core to use the HashSet<T> class you might as well use it :

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


Now you can do it even simpler, with List<T> constructor (Lists are modern Arrays :). E. g., in PowerShell:

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

精彩评论

暂无评论...
验证码 换一张
取 消