لماذا لا يحتوي Ilist على طرق إدراج أي ienumerable ؟

StackOverflow https://stackoverflow.com/questions/1117138

  •  12-09-2019
  •  | 
  •  

سؤال

أنا في موقف حيث أريد فقط إلحاق القيم في صفيف سلسلة (نوع السلسلة []) إلى كائن مع Ilistu003CString> وبعد كشفت نظرة سريعة على MSDN أن إيليستu003CT> يحتوي طريقة الإدراج فقط على إصدار يأخذ فهرس وكائن T، وليس لديك إصدار يأخذ iEnumerableu003CT> بدلا من T. هل هذا يعني أنه يجب علي كتابة حلقة على قائمة الإدخال لوضع القيم في قائمة الوجهة؟ إذا كان هذا هو الحال، يبدو من تصميم واجهة برمجة تطبيقات API وغير ودية إلى حد ما بالنسبة لي. ربما، أنا أفتقد شيئا. ماذا يفعل خبراء C # في هذه الحالة؟

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

المحلول

لأن الواجهة هي عموما أقل وظيفة مطلوبة لجعلها صالحة للاستعمال، لتقليل العبء على المنفذين. مع C # 3.0 يمكنك إضافة هذا كطريقة تمديد:

public static void AddRange<T>(this IList<T> list, IEnumerable<T> items) {
    if(list == null) throw new ArgumentNullException("list");
    if(items == null) throw new ArgumentNullException("items");
    foreach(T item in items) list.Add(item);
}

وآخرون فويلا؛ IList<T> لديها الآن AddRange:

IList<string> list = ...
string[] arr = {"abc","def","ghi","jkl","mno"};
list.AddRange(arr);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top