سؤال

ما هي أسهل طريقة لتحويل BindingList<T> إلى T[]؟

وتحرير: وأنا على 3.0 لهذا المشروع، لذلك لا LINQ

هل كانت مفيدة؟

المحلول

حسنا، إذا كان لديك LINQ (C # 3.0 + إما .NET Framework 3.5 أو LINQBridge ) يمكنك استخدام .ToArray() - على خلاف ذلك، مجرد خلق مجموعة ونسخ البيانات

T[] arr = new T[list.Count];
list.CopyTo(arr, 0);

نصائح أخرى

في صافي 2 لديك لاستخدام أسلوب .CopyTo() على BindingList<T> بك

ولقد تغير هذا المنصب منذ لقد لاحظت أنك الموسومة هذا مع .net2.0. هل يمكن استخدام قائمة لأنه لديه وسيلة ToArray ().

public T[] ToArray<T>(BindingList<T> bindingList) {
    if (bindingList == null)
        return new T[0];

    var list = new List<T>(bindingList);
    return list.ToArray();
}

ملحوظة: هذا هو في الواقع حل أقل performant للمن الحل CopyTo للأن أظهرت الأعضاء الآخرين. استخدام حلها بدلا من ذلك، هذا واحد يخلق اثنين من صفائف، والنتيجة واحدة الداخلي إلى مثيل قائمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top