将HashSet <T>转换为.NET中的数组

Agn*_*ian 33 .net arrays hashset

如何在.NET中将HashSet <T>转换为数组?

And*_*are 48

使用该HashSet<T>.CopyTo方法.此方法将项目从HashSet<T>数组复制到数组.

所以给定一个HashSet<String>叫做stringSet你会做这样的事情:

String[] stringArray = new String[stringSet.Count];
stringSet.CopyTo(stringArray);
Run Code Online (Sandbox Code Playgroud)

  • HashSet.ToArray()更简单 (9认同)
  • @Konstantin HashSet <T>有一个.ToArray()方法,但它是内部的.但是,您可以使用LINQ的.ToArray()扩展方法,该方法在内部使用.CopyTo()(因为HashSet <T>实现了ICollection <T>,而LINQ的.ToArray()实现具有ICollection <T>的特殊情况). (9认同)
  • 有ToArray吗?我好像找不到 (2认同)

eri*_*len 21

如果您的意思是System.Collections.Generic.HashSet,那么它很难,因为该类在框架3.5之前不存在.

如果你的意思是你在3.5上,那么只需使用ToArray,因为HashSet实现了IEnumerable,例如

using System.Linq;
...
HashSet<int> hs = ...
int[] entries = hs.ToArray();
Run Code Online (Sandbox Code Playgroud)

如果你有自己的HashSet类,很难说.