3
是否有可能使純粹在VBScript中實現的自定義容器類(無COM對象)與For Each語句一起工作?如果是這樣,我必須暴露什麼方法?如何使我的自定義類與For Each兼容?
是否有可能使純粹在VBScript中實現的自定義容器類(無COM對象)與For Each語句一起工作?如果是這樣,我必須暴露什麼方法?如何使我的自定義類與For Each兼容?
總之,沒有
爲什麼?創建一個可枚舉的集合類來得到像
Class CTest
....
End Class
Dim oTest, mElement
Set oTest = New CTest
....
For Each mElement In oTest
....
Next
該類必須遵循一些規則。我們需要的類暴露
稱爲公共只讀屬性Count
稱爲公共的默認方法Item
公共只讀屬性,稱爲_NewEnum
,應該返回
IUnknown
接口實現IEnumVARIANT
接口的對象,並且必須具有隱藏的屬性和一個調度ID -4
而從這個列表或要求,VBScript不包括任何方法來指示調度ID或屬性的隱藏屬性。
因此,這不能做
枚舉過存儲在容器類的元素的唯一方法是具有一個返回
一個對象,該支撐件的屬性(或方法)所有指示的要求,通常是用於容納元素的相同對象(快速,但它會暴露過多的信息)
一個數組(在VBScript中,數組可以枚舉)持有對每個元素的引用(如果陣列需要在通話中生成,則速度較慢,但不返回任何非必需信息)
'Foe Each'可以在陣列上工作。 –