Здравствуйте, Аноним, Вы писали:
А>А>IL_0020: callvirt instance class [mscorlib]System.Collections.IEnumerator [mscorlib]System.Collections.IEnumerable::GetEnumerator()
А>...
А>IL_0029: callvirt instance object [mscorlib]System.Collections.IEnumerator::get_Current()
А>
А>А> Current <error: an exception of type: {System.InvalidOperationException} occurred> System.Object
А>
Не торопитесь.
Дайте посмотрим на Ваш код:
//Создаем синхронизированую хештабличку,на основе пустой
Hashtable ht = Hashtable.Synchronized(new Hashtable());
//Добаляем в нее элемент
ht.Add(1,1);
//Приводим к интерфейсу
ICollection col = (ICollection)ht;
//Создаем энумератор
System.Collections.IEnumerator en=col.GetEnumerator();
//ресетим
en.Reset();
//Получаем текущий
Console.WriteLine(en.Current.ToString());
Только Вы не учли, что добавив в колекцию элемент — Вы ее рассинхронизировали,
а значит и энумератор НЕ ПОМОЖЕТ. Попробуем немножко перестроить ход наших мыслей
//Создаем пустую хештабличку
Hashtable ht = Hashtable();
//Добаляем в нее элемент
ht.Add(1,1);
//Приводим к интерфейсу спеуиального синхронного представителя нашей таблички.
ICollection col = (ICollection)ht.SyncRoot;
//Создаем энумератор
System.Collections.IEnumerator en=col.GetEnumerator();
//ресетим
en.Reset();
//Получаем текущий
Console.WriteLine(en.Current.ToString());
Вот так работает