Можно ли иметь массив внутри объекта Dictionary

Я знал, что объединение с подобными структурами данных не будет логичным, но было бы любопытно узнать, можем ли мы иметь элемент массива внутри объекта Dictionary. что-то вроде:

Set d = CreateObject("Scripting.Dictionary")

d.Add "Name", "John"
d.Add "Age", 31
d.Add "Company", Array("microsoft", "apple")

1 ответ

Ты один WScript.Echo от решения вопроса для себя:

>> Set d = CreateObject("Scripting.Dictionary")
>> d.Add "Company", Array("microsoft", "apple")
>> WScript.Echo Join(d("Company"))
>>
microsoft apple

ср этот вопрос

Обновление (спасибо @Ansgar):

Элементы доставлены .Item() (а также For Each) являются копиями; и копии заданий Array тоже (не использует ссылки, как на других языках). Таким образом, изменение элемента массива, хранящегося в словаре, означает присвоение нового массива:

>> Set d = CreateObject("Scripting.Dictionary")
>> d.Add "Company", Array("microsoft", "apple")
>> WScript.Echo Join(d("Company"))
>> d("Company") = Array(d("Company")(1), "samsung")
>> WScript.Echo Join(d("Company"))
>>
microsoft apple
apple samsung

Иногда удобнее использовать (другой) словарь, System.Collections.Arraylist или пользовательский объект (все объекты являются ссылками, поэтому присваивание дает доступ к исходному элементу).

Другие вопросы по тегам