اعتدت أن أعمل في فريق حيث كان LINQ غير محبوب قليلاً لأنه كان من الصعب تصحيح مثل هذا الرمز. كان لدينا اتفاق: بعد كل سلسلة LINQ ، ينشئ المطور متغيرًا محليًا يكتب نتيجة ToArray (). ما إذا كانت المصفوفة مطلوبة لأسفل الطريقة ، أم أنها تعمل فقط مع IEnumerable. قبل الإرجاع ، تم أيضًا تحويل النتيجة إلى مصفوفة ، ويبدو أنه لا توجد عمليات في قاعدة الكود بأكملها تعيد أو تقبل مجموعة غير المصفوفة.
تراث الملتحي! - سوف تفكر وستكون على حق. ومع ذلك ، على الرغم من حقيقة أن العديد من السنوات قد مرت منذ أن أصبح LINQ في كل مكان وأن IDEs يسمح لك بمشاهدة البيانات في التصحيح ، لا يزال بعض المطورين لديهم فكرة سيئة عن معايير اختيار نوع القبول والعودة عندما يتعلق الأمر بالمجموعات.

بادئ ذي بدء ، ما هي المجموعة؟ نظرًا لأن BCL لها نوع بيانات يحمل نفس الاسم ، فمن المهم أن نفهم أن المجموعة هي نوع بيانات مصمم للعمل على مجموعة من العناصر التي لها بعض الخصائص المشتركة (نوع البيانات). وبالتالي ، فإن أي شيء يمكن تعداده هو مجموعة.
تفضل التجريد
, , . , . , . , , .
Lazy loading
- ( IEnumerable) , . IList, , . , lazy loading, — . . , 'Lazy' , , .
IReadOnlyCollection
, , IArray, IReadOnlyCollection, -.
namespace System.Collections.Generic
{
public interface IReadOnlyCollection : IEnumerable, IEnumerable
{
int Count { get; }
}
}- 4.5, read-only . Array, List, IList.
IEnumerable … , IReadOnlyCollection, List. , - List.
Array IReadOnlyCollection List, . IList .
null
, , , , , , , null. null, . - null 0 . 1 null, null, , . :
if(myEnumerable != null)
{
foreach(var item in myEnumerable)
{
}
} , :
foreach(var item in myEnumerable ?? Enumerable.Empty<T>())
{
}IEnumerable/ICollection/IList
, , :
IEnumerable | , -, |
IReadOnlyCollection : IEnumerable | -, |
ICollection : IEnumerable | , (IsReadOnly) |
IReadOnlyList : IReadOnlyCollection | , |
IList : ICollection | , |
, , . , . IEnumerable , - ICollection, IList… .
, , , . , , IReadOnlyCollection. IEnumerable , , , — -. lazy loading, IList ICollection, — read-only .
Web API HTTP
HTTP, , -. , , , IEnumerable IList.
, HTTP JSON - , . , (Newtonsoft.Json, System.Text.Json), List. \ - . IEnumerable response .
, , , , .
سأكون سعيدًا بالتعديلات والإضافات ، أوصي بأن تتعرف على إرشادات تصميم الإطار للمجموعات .