تحديد فئة مجموعة
Be sure إلى اختيار your مجموعة فئة carefully. يمكن أن يتم تقييد استخدامك للمجموعة لو استخدمت النوع الخاطئ. في عام, avoid using the أنواع في the System.Collections مساحة الاسم unless you are specifically targeting .NET الإصدار إطار العمل 1.1. إصدارات المجموعات العامة و المتزامنة من المجموعات يكون مُفضل بسبب وجود أمان أكبر للنوع الخاصة بهم بالإضافة إلى تحسينات أخرى.
يجب مراعاة الأسئلة التالية:
هل تحتاج قائمة متتالية حيث يتم تجاهل العنصر عادةً بعدما يتم استرداد قيمته؟
If نعم, consider using the Queue فئة أو the Queue<T> generic فئة if you need أول-في, أول-خارج (FIFO) سلوك. Consider using the Stack فئة أو the Stack<T> generic فئة if you need أخير-في, أول-خارج (LIFO) سلوك. لوصول آمن من مؤشرات ترابط متعددة، استخدام الإصدارات المتزامنة ConcurrentQueue<T> و ConcurrentStack<T>.
إذا كانت الإجابة لا، فعليك استخدام مجموعات أخرى.
هل تحتاج صواب الوصول إلى العناصر بترتيب معين، مثل FIFO LIFO, أو عشوائي ؟
The Queue فئة و the Queue<T> أو ConcurrentQueue<T> generic فئة offer FIFO الوصول. لمزيد من المعلومات، راجع متي استخدام مجموعة مؤشر الترابط الاَمن.
Stackالفصل الدراسي و Stack<T>أو ConcurrentStack<T>تقدم فئة عامة LIFO الوصول. لمزيد من المعلومات، راجع متي استخدام مجموعة مؤشر الترابط الاَمن.
LinkedList<T>فئة عامة يسمح الوصول التسلسلي أما من الرأس إلى الذيل، أو من خلفي إلى الرأس.
هل تحتاج الوصول إلى كل عنصر عن طريق فهرس ؟
توفر الفئات ArrayList و StringCollection و الفئة العامة List<T> وصولاً إلي العناصر الخاصة بهم بواسطة فهرس يستند إلي الصفر.
توفر الفئات Hashtable ، و SortedList ، و ListDictionary ، و StringDictionary ، و الفئات العامة Dictionary<TKey, TValue> و SortedDictionary<TKey, TValue> وصولاً إلي العناصر الخاصة بهم بواسطة مفتاح للعنصر.
توفر الفئات NameObjectCollectionBase و NameValueCollection و الفئات العامة KeyedCollection<TKey, TItem> و SortedList<TKey, TValue> وصولاً إلي العناصر الخاصة بهم إما بواسطة فهرس يستند إلي الصفر أو بمفتاح للعنصر.
هل سيحتوي كل عنصر على قيمة واحدة، أو تركيبة من مفتاح واحد و قيمة واحدة، أو تركيبة من مفتاح واحد وقيم متعددة ؟
قيمة واحدة: استخدم أي من المجموعات المُستندة إلى الواجهة IList أو الواجهة العامة IList<T>.
مفتاح واحد وقيمة واحدة: استخدم أي من المجموعات المُستندة إلى الواجهة IDictionary أو الواجهة العامة IDictionary<TKey, TValue>.
قيمة واحدة مع مفتاح مُضمن: استخدم الفئة العامة KeyedCollection<TKey, TItem>.
مفتاح واحد و قيم متعددة: استخدم الفئة NameValueCollection.
هل تحتاج لفرز العناصر بشكل مختلف عن الطريقة التي تم إدخالها بها؟
تقوم الفئة Hashtable بفرز عناصرها حسب شفرة التجزئة.
تقوم الفئة SortedList و الفئات العامة SortedDictionary<TKey, TValue> و SortedList<TKey, TValue> بفرز العناصر الخاصة بهم بواسطة المفتاح، استناداً إلى تطبيقات الواجهة IComparer و الواجهة العامة IComparer<T>.
يوفر ArrayList الأسلوبSort الذي يأخذ التطبيق IComparer كمعلمة. النسخة العامة المطابقة له هي الفئة العامة List<T>، والتي توفر الأسلوب Sort الذي يأخذ تطبيق من الواجهة العامة IComparer<T> كمعلمة.
هل تحتاج لعمليات البحث السريع و استرداد المعلومات؟
- ListDictionary تكون أسرع من Hashtable بالنسبة للمجموعات الصغيرة (10 عناصر أو أقل). توفر الفئة العامة Dictionary<TKey, TValue> بحث أسرع عن الفئة العامة SortedDictionary<TKey, TValue>. $ $ $ $ متعددة مؤشرات الترابط لتنفيذ هو ConcurrentDictionary<TKey, TValue>. ConcurrentBag<T>يوفر الإدراج متعددة مؤشرات الترابط السريع عن تجمع غير مرتب بيانات. للحصول على مزيد من المعلومات حول كلاهما أنواع متعددة مؤشرات الترابط، راجع متي استخدام مجموعة مؤشر الترابط الاَمن.
هل تحتاج مجموعات تقبل السلاسل فقط؟
StringCollection (استناداً إلى IList) وStringDictionary (استناداً إلى IDictionary) تكون في مساحة الاسم System.Collections.Specialized.
بالإضافة إلى ذلك، يمكنك استخدام أي من فئة مجموعة عامة في مساحة الاسم System.Collections.Generic كمجموعة سلسلة ذات نوع قوي بشدة عن طريق تحدد الفئة String للوسيطات ذات النوع عام الخاصة بهم.
LINQ إلي الكائنات و PLINQ
LINQ إلى كائنات المطورين استخدام استعلامات LINQ للوصول إلى الكائنات في ذاكرة من كـ الطويلة كـ يقوم نوع الكائنات بتطبيق IEnumerableأو IEnumerable<T>. استعلامات LINQ توفير نمط شائع للوصول إلى بيانات، يتم عادة أكثر إيجازاً و قابلة للقراءة من stوard foreachحلقات، و توفير تصفية، ترتيب، و تجميع قدرات. بالإضافة إلى ذلك، يمكن أيضا توفير استعلامات LINQ الأداء التحسينات. لمزيد من المعلومات، راجع LINQ كائنات.
يوفر PLINQ تنفيذ متوازي من LINQ إلى الكائنات التي يمكن أن تقدم تنفيذ الاستعلام أسرع في العديد من السيناريوهات، من خلال استخدام أجهزة الكمبيوتر multi-core أكثر فعالية. لمزيد من المعلومات، راجع LINQ متوازي (PLINQ).
راجع أيضًا:
المرجع
System.Collections.Specialized