C #: هل لدي لجعل ArrayList متزامنة إذا مواضيع متعددة قراءتها فقط

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

سؤال

وأنا باستخدام ArrayList ثابتة في فئة لتخزين المعلومات عن حقول قاعدة البيانات غير قابلة للتحديث. أنا تخطط لتهيئة في منشئ مرة واحدة (استدعاء الأسلوب الحرف الأول يحرسها القفل في منشئ). بعد أن مواضيع متعددة معرفة ما اذا كان arraylist يحتوي حقل. لا بد لي من السيطرة على هذا الوصول للقراءة في أي شكل من الأشكال؟ على سبيل المثال من خلال الدعوة ArrayList.Synchronized.

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

المحلول

لا (ويجب أن لا تحتاج إلى عند إنشاء إما طالما كنت تفعل ذلك في منشئ static، <وأ href = "http://www.yoda.arachsys.com/csharp/singleton.html" يختلط = "نوفولو noreferrer"> التي لديها قفل مولتيثريد ضمنية - إذا لم تكن في وضع يمكنها من القيام بذلك، وربما كنت تريد أن قفل). هناك ReaderWriterLockSlim إذا كان يمكنك استخدامها للتحكم في وصول إذا كنت تفعل في نهاية المطاف تحتاج إلى لR / W الوصول بالرغم من ذلك.

نصائح أخرى

ولا. مطلوب تزامن فقط للكائنات جليل حيث بك ذاهبون إلى تغيير حالة.

لا، طالما كنت تقرأ هل يمكن أن يكون فقط في ذلك.

لا، ولكن النظر التفاف عليه في ReadOnlyCollection لجعل أي متأكدا من المواضيع يمكن تعديله.

وتحرير: ولكن، للقيام بذلك، وكنت بحاجة لجعل القائمة على List<T> بدلا من ArrayList

لإنشاء الأولي للقائمة الخاصة بك هل يمكن النظر في استخدام منشئ ثابت. سوف إلا أن يسمى هذا مرة واحدة في أول إشارة إلى نوع.

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