Я пытаюсь создать замену класса VB6 для класса Scripting.Dictionary из SCRRUN.DLL. Scripting.Dictionary имеет (среди прочего) метод «Ключи», который возвращает массив ключей и свойство «Item» для чтения/записи, которое возвращает элемент, связанный с ключом. Я смущен этим, потому что оба они кажутся дефолтами для класса. То есть:Несколько свойств/методов по умолчанию в классе VB6?
For Each X In MyDict
эквивалентен:
For Each X In MyDict.Keys
Что мне следует, что "ключи" является операцией по умолчанию для класса, но:
MyDict("MyKey") = "MyValue"
MsgBox MyDict("MyKey")
эквивалентен:
MyDict.Item("MyKey") = "MyValue"
MsgBox MyDict.Item("MyKey")
Который мне impli что «Item» - это операция по умолчанию для класса.
Я никогда раньше не создавал класс VB6, у которого была операция по умолчанию, поэтому, поняв это, я подумал, что, возможно, я могу определить несколько операций по умолчанию, если все они имеют разные подписи, что они делают: Ключи ноль, элемент getter принимает вариант, а элемент setter принимает два варианта. Но это, похоже, не разрешается: когда я использую «Инструменты/Атрибуты процедуры», чтобы установить функцию Keys по умолчанию, а затем я использую ее для установки свойства Item по умолчанию, IDE жалуется, что по умолчанию уже установлен.
Так что я думаю, что я не понимаю, что здесь фундаментальное. Что происходит в объекте Scripting.Dictionary, который позволяет ему действовать так, как если бы «Ключи» были по умолчанию в некоторых контекстах, но как будто «Item» является значением по умолчанию в других? И что бы это ни было, могу ли я сделать то же самое в VB6?
@ У Bob77 есть хороший момент - на самом деле в справочнике программистов есть довольно много информации. Вы можете получить к нему доступ из документов, которые были отправлены с ним, или [онлайн] (http://msdn.microsoft.com/en-us/library/hh204616.aspx). –