Re[4]: IEnumerable в Hashtable
От: Аноним  
Дата: 26.12.05 17:05
Оценка:
Здравствуйте, scif, Вы писали:

S>Только Вы не учли, что добавив в колекцию элемент — Вы ее рассинхронизировали,


Бррр, это как, если не секрет? Если посмотреть рефлектором, статический метод Synchronized возвращает екземпляр Hashtable.SyncHashtable. Этот класс является просто оберткой, предоставляющий синхронизированный доступ к хештаблице.
Как можно рассинхронизировать коллекцию, добавив в нее элемент ?!

S>а значит и энумератор НЕ ПОМОЖЕТ. Попробуем немножко перестроить ход наших мыслей

S>//Создаем пустую хештабличку
S>Hashtable ht = Hashtable();
S>//Добаляем в нее элемент
S>ht.Add(1,1);
S>//Приводим к интерфейсу спеуиального синхронного представителя нашей таблички.
S>ICollection col = (ICollection)ht.SyncRoot;

//Рефлектор:
public virtual object SyncRoot
{
      get
      {
            return this;
      }
}


Так что "спеуиальный синхронный представитель нашей таблички" это есть сама хештаблица.

Не морочьте людям голову, если не знаете о чем говорите
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.