Почему я могу использовать VBScript для каждого оператора
для итерации объекта System.Collections.ArrayList
, но не объект Systems.Collections.SortedList
?
Учитывая следующее:
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
, по-видимому, является интерфейсом, отвечающим за реализацию свойства _NewEnum
( dispId
of -4).
Я был бы очень признателен, если бы кто-нибудь мог пролить свет на различное поведение COM-взаимодействия этих похожих классов.
Я знаю, что могу использовать другие свойства, предоставляемые SortedList
, для перебора коллекции. Я не спрашиваю, как выполнить итерацию SortedList
. Я просто спрашиваю, почему IEnumrable
, похоже, не реализован в версии взаимодействия SortedList
, когда он реализован в версии взаимодействия ArrayList
.