Свойство is Synchronized

если оно возвращает b true

Свойство IsSynchronized Показывает, поддерживает ли коллекция синхронный доступ из нескольких потоков. Если оно возвращает True, Можно ожидать, что коллекция гарантирует для нескольких потоков безопасное одновременное добавление, удаление и доступ к ее элементам. Если свойство возвращает False, То гарантировать одновременный доступ к коллекции только одного потока обязан пользователь. Последний случай более распространен, поскольку введение в коллекцию механизмов блокировки для поддержки параллельного доступа может привести к существенному снижению производительности для всех, кто использует коллекцию. Обычно лучше заставить тех немногих, кому нужен параллельный доступ, заплатить за него некоторую цену в форме написания дополнительного кода, чем обречь на ухудшение производительности всех остальных потребителей коллекции. Свойство SyncRoot Предоставляет объектную ссылку, которую потребители коллекции могут использовать при реализации своей собственной блокировки для поддержки параллельного доступа. Ожидается, что коллекция возвращает объектную ссылку, которую можно использовать с монитором или оператором Lock, И если потребитель захватывает полученный объект, то блокировка должна предотвращать доступ к элементам коллекции со стороны любого другого потока, пока она не будет снята. Обычно коллекция просто возвращает ссылку на себя, если это ссылочный тип, и захват самого объекта блокирует доступ из другого потока к любым элементам класса до момента снятия блокировки. Однако в определенных ситуациях вы могли бы использовать в целях блокировки не сам объект коллекции, а содержащийся в ней объект. Для потребителей главное в том, что они должны суметь принять объектную ссылку, возвращаемую из SyncRoot, И захватить ее, после чего можно быть уверенным, что другие потоки не смогут обращаться, добавлять или удалять элементы коллекции, пока блокировка не снята. Обобщенной версией интерфейса является ICollection<T>. Если вы создаете сильно типизированную коллекцию, экспонирующую свой счетчик и поддерживающую сценарии копирования и многопоточного доступа. Факторизация интерфейсов ICollection<T> И IList<T> Несколько отличается от их нетипизированных собратьев. Несколько элементов интерфейса IList Реализованы в иерархии наследования на LCollection<T>, Включая Add, Remove, Contains, Clear И IsReadOnly . На самом деле имело бы смысл поместить их ниже, на уровне коллекции, поскольку они не специфичны для упорядоченной индексированной коллекции, какую представляет IList. Однако на данном этапе Microsoft не может факторизовать интерфейсы ICollection И IList, Поскольку они существуют со времен. NET 1.0 и это привело бы в негодность огромные объемы уже написанного кода.