ما هي ميزة حقيقية من العودة ICollection<T> بدلا من قائمة<T>?[مكررة]

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

سؤال

لقد قرأت بضعة بلوق وظيفة بالذكر أن واجهات برمجة التطبيقات العامة يجب علينا العودة دائما ICollection (أو IEnumerable) بدلا من القائمة.ما هي ميزة حقيقية من العودة ICollection بدلا من القائمة ؟

وذلك بفضل!

مكررة: ما هو الفرق بين قائمة (T) و جمع(T)?

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

المحلول

العداد فقط يعود كيان واحد في وقت واحد كما يمكنك تكرار أكثر من ذلك.هذا هو لأنه يستخدم العائد العودة.مجموعة, من ناحية أخرى, يعود القائمة بأكملها ، مما يتطلب أن تكون القائمة المخزنة تماما في الذاكرة.

الجواب القصير هو أن التعداد هي أخف وزنا وأكثر كفاءة.

نصائح أخرى

فهو يوفر لك المزيد من الحرية عند اختيار هيكل البيانات الأساسية.

وهناك قائمة تفترض أن تنفيذ يدعم الفهرسة، ولكن ICollection يجعل لا يوجد مثل هذا الافتراض.

وهذا يعني أنه إذا تكتشف أن مجموعة قد توفر أداء أفضل منذ ترتيب غير ذي صلة، ثم أنت حر لتغيير نهجكم دون التأثير على العملاء.

وانها التغليف الأساسي.

وأود أن أعتقد أن IList يكون من الأنسب، ولكن ...

ICollection هو مجرد واجهة ، في حين أن قائمة محددة لتنفيذ تلك الواجهة.ماذا لو أردت استخدامها في وقت لاحق بعض حاوية أخرى إلى جانب قائمة ؟ إذا كنت علنا تفضح ICollection واجهة يمكنك تغيير الحاوية الداخلية إلى شيء آخر في وقت لاحق - طالما الحاويات الجديدة كما تنفذ واجهة ICollection.

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