Преобразование HashSet в Список

Для создания переменной вычисленной в функции видимое в функции B у Вас есть три варианта:

  • делают его, глобальное,
  • делают его свойством объекта, или
  • передача это в качестве параметра при вызове B от A.

, Если Ваша программа является довольно маленькой тогда, globals не так плохи. Иначе я рассмотрел бы использование третьего метода:

function A()
{
    var rand_num = calculate_random_number();
    B(rand_num);
}

function B(r)
{
    use_rand_num(r);
}
25
задан Micha Wiedenmann 22 August 2018 в 13:30
поделиться

3 ответа

Вот как бы я это сделал:

   using System.Linq;
   HashSet<int> hset = new HashSet<int>();
   hset.Add(10);
   List<int> hList= hset.ToList();

HashSet по определению не содержит дубликатов. Таким образом, нет необходимости в Distinct .

65
ответ дан 28 November 2019 в 17:47
поделиться

Два эквивалентных варианта:

HashSet<string> stringSet = new HashSet<string> { "a", "b", "c" };
// LINQ's ToList extension method
List<string> stringList1 = stringSet.ToList();
// Or just a constructor
List<string> stringList2 = new List<string>(stringSet);

Лично я бы предпочел позвонить ToList , это означает, что вам не нужно повторно указывать тип списка.

Вопреки моим предыдущим мыслям, оба способа допускают ковариацию быть легко выраженным на C # 4:

    HashSet<Banana> bananas = new HashSet<Banana>();        
    List<Fruit> fruit1 = bananas.ToList<Fruit>();
    List<Fruit> fruit2 = new List<Fruit>(bananas);
14
ответ дан 28 November 2019 в 17:47
поделиться

Существует метод расширения Linq ToList () , который сделает это (он определен в IEnumerable , который реализован HashSet <

6
ответ дан 28 November 2019 в 17:47
поделиться
Другие вопросы по тегам:

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