Для создания переменной вычисленной в функции видимое в функции B у Вас есть три варианта:
, Если Ваша программа является довольно маленькой тогда, globals не так плохи. Иначе я рассмотрел бы использование третьего метода:
function A()
{
var rand_num = calculate_random_number();
B(rand_num);
}
function B(r)
{
use_rand_num(r);
}
Вот как бы я это сделал:
using System.Linq;
HashSet<int> hset = new HashSet<int>();
hset.Add(10);
List<int> hList= hset.ToList();
HashSet по определению не содержит дубликатов. Таким образом, нет необходимости в Distinct
.
Два эквивалентных варианта:
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);
Существует метод расширения Linq ToList
, который сделает это (он определен в IEnumerable
, который реализован HashSet <