تحويل HashSet إلى صفيف في. NET
سؤال
وكيف يمكنني تحويل HashSet
المحلول
واستخدم HashSet<T>.CopyTo
الأسلوب. هذا الأسلوب نسخ العناصر من HashSet<T>
إلى صفيف.
وهكذا إعطاء HashSet<String>
دعا stringSet
كنت تفعل شيئا من هذا القبيل:
String[] stringArray = new String[stringSet.Count];
stringSet.CopyTo(stringArray);
نصائح أخرى
إذا كنت تعني System.Collections.Generic.HashSet، انها نوع من الصعب منذ تلك الفئة لم تكن موجودة قبل الإطار 3.5.
إذا كنت تعني أنك على 3.5، ومجرد استخدام ToArray منذ HashSet تنفذ IEnumerable، منها مثلا.
using System.Linq;
...
HashSet<int> hs = ...
int[] entries = hs.ToArray();
إذا كان لديك الدرجة HashSet الخاصة بك، فإنه من الصعب القول.
وأعتقد
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<T>
.
والواقع في الواقع كما يجب أن مرجع System.Core
استخدام فئة HashSet<T>
قد تستخدم أنها كذلك:
T[] myArray = System.Linq.Enumerable.ToArray(hashSet);
والآن يمكنك أن تفعل أكثر بساطة، مع منشئ List<T>
(قوائم وصالحة الحديثة :).
E. ز، في بوويرشيل:.
$MyNewArray = [System.Collections.Generic.List[string]]::new($MySet)
لا تنتمي إلى StackOverflow