Почему я могу использовать оператор VBScript for each
для итерации объекта System.Collections.ArrayList
, но не объекта Systems.Collections.SortedList
?Понимание IEnumerable в .Net COM Interop
Учитывая следующее:
set aList = Server.CreateObject("System.Collections.ArrayList")
aList.Add "a"
aList.Add "b"
aList.Add "c"
for each item in aList
' do something
next
set sList = Server.CreateObject("System.Collections.SortedList")
sList.Add "a", 1
sList.Add "b", 2
sList.Add "c", 3
for each item in sList
' do something
next
Линия
for each item in sList
аварии с
объект не поддерживает это свойство или метод *.
По этому свойству я предполагаю, что они означают _NewEnum
собственности. Но почему _NewEnum
выставлен ArrayList
, но не SortedList
? Оба класса реализуют интерфейс IEnumberable
, который от разборки mscorelib.dll
представляется интерфейсом, ответственным за реализацию свойства (dispId
of -4).
Если кто-то может пролить свет на различные взаимодействия COM-взаимодействия этих подобных классов, я был бы очень благодарен.
Я знаю, что могу использовать другие свойства, выставленные SortedList
, чтобы перебирать коллекцию. Я не спрашиваю, как итерации SortedList
. Я просто спрашиваю, почему IEnumrable
, похоже, не реализован в версии interop SortedList
, когда она реализована в версии interop ArrayList
.