在.NET中将数组转换为HashSet <T>
如何将数组转换为散列集?
string[] BlockedList = BlockList.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
我需要将此列表转换为hashset
。
你不指定BlockedList
是什么types的,所以我将假设它是从IList
派生的(如果你想要写BlockList
那么它将是一个从IList
派生的string数组)。
HashSet
有一个构造函数,它接受一个IEnumerable
,所以你只需要将这个列表传递给这个构造函数,就像IList
派生自IEnumerable
。
var set = new HashSet(BlockedList);
我假设BlockList是一个string(因此调用拆分)返回一个string数组。
只需将数组(实现IEnumerable)传递给HashSet的构造函数 :
var hashSet = new HashSet<string>(BlockedList);
这是一个扩展方法,它将从任何IEnumerable生成一个HashSet:
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source) { return new HashSet<T>(source); }
要用你的例子在上面:
var hashSet = BlockedList.ToHashSet();
错过了关于扩展例子的新关键字….
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source) { return new HashSet<T>(source); }
更进一步,下面的一行代码演示了如何将文本string数组转换为HashSet,以便您不必定义中间variablesSomethingList
。
var directions = new HashSet<string>(new [] {"east", "west", "north", "south"});