VBScript for each
문을 사용하여 System.Collections.ArrayList
개체를 반복 할 수 있지만 Systems.Collections.SortedList
개체를 반복 할 수없는 이유는 무엇입니까? 주어진 다음의.Net COM Interop에서 IEnumerable을 이해하십시오.
:
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
은 노출되지 않습니다. 두 클래스 모두 mscorelib.dll
을 분해하여 _NewEnum
속성 (dispId
-4)을 구현하는 인터페이스 인 것처럼 보이는 IEnumberable
인터페이스를 구현합니다.
누구나 이러한 비슷한 클래스의 서로 다른 COM interop 동작에 대해 설명 할 수 있다면 매우 감사 할 것입니다.
나는 SortedList
에 의해 노출 된 다른 속성을 사용하여 컬렉션을 반복 할 수 있음을 알고 있습니다. SortedList
을 반복하는 방법을 묻지 않습니다. 나는 단지 IEnumrable
이 ArrayList
의 interop 버전으로 구현 될 때 SortedList
의 interop 버전에서 구현되지 않는 것일 뿐이라고 묻는 것이다.