2016-03-18 3 views
1

Когда я выполнить команду:Powershell хэш-таблица хранения значений "System.Collections.DictionaryEntry"

$var = @{a=1;b=2} 

в Powershell (версия 3), $var заканчивается со значением {System.Collections.DictionaryEntry, System.Collections.DictionaryEntry}. Почему это происходит? Как сохранить значения, которые я хочу сохранить?

+0

Как вы определяете это значение? Что вы делаете, чтобы увидеть этот результат? – briantist

+0

Я использовал PowerGUI, но похоже, что это связано с этим приложением, потому что оно работает в консоли Powershell. – Bobazonski

ответ

3

Это потому, что ваш ISE будет перечислять коллекцию, чтобы создать переменный-TreeView, а объекты вернулись из HashtableEnumerator, которые вы получаете от $var.GetEnumerator() являются DictionaryEntry -Объектами.

$var = @{a=1;b=2} 

#Collection is a Hashtable 
$var | Get-Member -MemberType Properties  

    TypeName: System.Collections.Hashtable 

Name   MemberType Definition 
----   ---------- ---------- 
Count   Property int Count {get;} 
IsFixedSize Property bool IsFixedSize {get;} 
IsReadOnly  Property bool IsReadOnly {get;} 
IsSynchronized Property bool IsSynchronized {get;} 
Keys   Property System.Collections.ICollection Keys {get;} 
SyncRoot  Property System.Object SyncRoot {get;}    
Values   Property System.Collections.ICollection Values {get;} 

#Enumerated objects (is that a word?) are DictionaryEntry(-ies) 
$var.GetEnumerator() | Get-Member -MemberType Properties 

    TypeName: System.Collections.DictionaryEntry 

Name MemberType Definition 
---- ---------- ---------- 
Name AliasProperty Name = Key 
Key Property  System.Object Key {get;set;} 
Value Property  System.Object Value {get;set;} 

Вы значение (1 и 2) хранится в Value -свойстве в объектах, пока они Key это идентификатор вы использовали (а и б).

Вам нужно только об этом заботиться, когда вам нужно перечислить хеш-таблицу, например. Когда вы перебираете каждый элемент. Для нормального использования это за кадром-волшебство, поэтому вы можете использовать $var["a"].

 Смежные вопросы

  • Нет связанных вопросов^_^