Преобразуйте HashSet <T> в массив в.NET

Я думаю, что вы ищете функцию CreateProcess в Windows API. Есть на самом деле семья связанных звонков, но это поможет вам начать. Это довольно легко.

33
задан Agnel Kurian 21 October 2009 в 21:31
поделиться

3 ответа

Используйте метод HashSet .CopyTo . Этот метод копирует элементы из HashSet в массив.

Итак, учитывая HashSet , называемый stringSet , вы должны сделать что-то вроде это:

String[] stringArray = new String[stringSet.Count];
stringSet.CopyTo(stringArray);
48
ответ дан 27 November 2019 в 18:03
поделиться

Если вы имеете в виду System.Collections.Generic.HashSet, это довольно сложно, поскольку этот класс не существует до версии 3.5.

Если вы имеете в виду, что используете 3.5, просто используйте ToArray, поскольку HashSet реализует IEnumerable, например

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

Если у вас есть собственный класс HashSet, трудно сказать.

21
ответ дан 27 November 2019 в 18:03
поделиться

Я полагаю

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 .

Фактически, поскольку вы должны ссылаться на System.Core , чтобы используйте класс HashSet , вы также можете его использовать:

T[] myArray = System.Linq.Enumerable.ToArray(hashSet);
0
ответ дан 27 November 2019 в 18:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: