هي غير عام في مجموعات .صافي عفا عليها الزمن ؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

بعبارة أخرى:

هل هناك سبب وجيه لاختيار فضفاضة كتبته جمع أكثر من نوع واحد آمنة (HashTable مقابلالقاموس)?هل لا تزال هناك فقط من أجل التوافق ؟

بقدر ما أفهم ، ومجموعات عامة ليس فقط هي من نوع آمن ، ولكن أداء أفضل.


هنا مقال شامل عن هذا الموضوع: دراسة مستفيضة من هياكل البيانات باستخدام C# 2.0.

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

المحلول

غير ومجموعات عامة حتى عفا عليها الزمن أنهم قد تم إزالتها من CoreCLR المستخدمة في سيلفرلايت و يعيش شبكة.

نصائح أخرى

هناك أيضا مشاكل مع COM الرؤية - COM interop لا يمكن استخدامها مع الأدوية

تسير إلى الأمام فقط ومجموعات عامة ينبغي أن تستخدم.هناك أيضا فائدة من تجنب الملاكمة/علبته من أنواع في المجموعة.هذا هو ineffecient ، وخصوصا عندما يكون لديك مجموعة من أنواع القيم التي يتم تحويلها إلى النظام.الكائن عند تخزينها على جمع ، ومن ثم تخزين القيم على كومة بدلا من مكدس الاستدعاءات.

وفيما يتعلق باستخدام غير عامة مجموعات لتخزين مجموعات غير متجانسة من الأشياء, يمكنك دائما استخدام قائمة<object> لتحقيق نفس الشيء.لهذا السبب وحده, أنا أقول هناك تقريبا أي سبب على الإطلاق لمس غير عام مجموعات من أي وقت مضى مرة أخرى.

الاستثناء لهذا هو الحفاظ على التوافق مع أنظمة مكتوبة في لغات أخرى ، أو ضد الإصدارات السابقة .NET framework, ولكن هذا جميل "منفعل" حالة إذا كنت تسألني.

أستطيع أن أقول لكم أن XAML التسلسل مجموعات تعتمد على تنفيذ إما IList أو يقع حتى غير عامة المجموعات ستكون معنا لبعض الوقت.

لا تقفز و تقول التي عفا عليها الزمن أو تسير إلى إزالتها في أي وقت قريب.صحيح أنه يجب تجنب استخدام غير ومجموعات عامة إلا إذا كان لديك سبب لا عدم استخدام صيغة عامة.الآلاف من الخطوط القديمة (لا إرث) رمز لا تزال تطوف (و سيكون عاما) أن الدعم غير عامة مجموعات مثل ArrayLists.منذ كانت هذه فقط في مجموعات .NET 1.0 و 1.1, وقد استخدم على نطاق واسع (وأساء) على مدار السنة.

ما زلت في بعض الأحيان إلى التفاعل مع قديم O/R مخطط مكتوب في .صافي 1.1 أن يعود IList الكائنات.لدي الأسلوب الذي يقوم التحويل إلى قائمة عامة<> التي ليست فعالة ، ولكن هذا هو ما هو عليه.

وإذا كنت تحتاج إلى تخزين كائنات مختلفة في نفس مجموعة (غريب لكنه ممكن) لك سوف تحتاج إلى جمع غير عامة.عقوبة الملاكمة و علبته هو شيء عليك أن تدفع على كل حال.

لا تخافوا على استخدامها إذا كنت تشعر بأن لديك إلى.

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

تحرير:كما علق يمكنك فقط استخدام List<Object> - doh!

نعم ، بقدر ما أفهم أنهم هناك فقط من أجل التوافق مع المنتجات الحالية.يجب عليك دائما استخدام نوع آمنة الإصدار (أياستخدام النظام.مجموعات.عامة على النظام.مجموعات).

http://msdn.microsoft.com/en-us/library/ms379564.aspx

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