List не реализует SyncRoot!

Все используют много List. Мне нужно перебрать этот список, поэтому я использую известный шаблон SyncRoot .

Недавно я заметил в этом сообщении, что SyncRoot следует избегать в пользу «встроенного» потока -безопасность (каждый метод блокирует закрытый объект, не раскрывая его с помощью свойства SyncRoot). Я могу это понять, и частично я согласен с этим.

Вопрос в том, что класс List не реализует свойство SyncRoot, даже если реализует интерфейс ICollection , который предоставляет SyncRoot свойство. Я говорю это, потому что код

 List list = new List()
 list.SyncRoot;

дает мне следующую ошибку компилятора:

ошибка CS0117: 'System.Collections.Generic.List' не содержит определения для 'SyncRoot'

... Если это правда , как мне синхронизировать общедоступное свойство типа List при итерации по нему?

12
задан Community 23 May 2017 в 11:54
поделиться