سؤال

وعندما يكون لدي الكيانات في نطاقي مع قوائم من الأشياء، وينبغي أن يتعرض كما ILists أو IEnumerables؟ مثلا أجل لديه مجموعة من OrderLines.

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

المحلول

IEnumerable<T> يمثل سلسلة من العناصر يمكنك تكرار عبر (باستخدام foreach، على سبيل المثال)، في حين أن <لأ href = "https://msdn.microsoft.com/en-us/library/5y536ey6.aspx" يختلط = "noreferrer" عنوان = "وثائق MSDN" > IList<T> عبارة عن مجموعة التي يمكنك إضافتها أو إزالتها من.

وعادة ما عليك تريد أن تكون قادرا على تعديل أمر بإضافة أو إزالة OrderLines إليها، لذلك ربما كنت ترغب Order.Lines ليكون IList<OrderLine>.

وأما وقد قلت ذلك، هناك بعض القرارات تصميم الإطار يجب عليك ان تجعل. على سبيل المثال، يجب أن يكون من الممكن إضافة نفس مثيل ل OrderLine إلى أمرين مختلفة؟ على الاغلب لا. ذلك بالنظر إلى أن عليك أن ترغب في أن تكون قادرة على التحقق من صحة ما إذا كان ل OrderLine يجب أن تضاف إلى النظام، وكنت قد ترغب في الواقع على السطح خطوط الملكية باعتبارها IEnumerable<OrderLine> فقط، وتقديم اضافة (ل OrderLine) وإزالة (ل OrderLine) الأساليب التي يمكن التعامل مع التحقق من الصحة.

نصائح أخرى

ومعظم الوقت أنا في نهاية المطاف الذهاب مع IList على IEnumerable لأنه ليس لدى IEnumerable طريقة العد ولا يمكنك الوصول إلى مجموعة من خلال مؤشر (ولكن إذا كنت تستخدم LINQ يمكن أن تحصل حول هذا مع طرق الإرشاد ).

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