Могу ли я добавить ключ с именем «keys» в хеш-таблицу без переопределения элемента «keys» - PullRequest
4 голосов
/ 22 марта 2020

Кажется, что я не могу добавить произвольное имя ключа к hashtable без переопределения члена с таким именем, если оно уже существует.

Я создаю таблицу ha sh ($x) и добавьте две клавиши, one и two:

$x = @{}

$x['one'] = 1
$x['two'] = 2

Затем добавленные клавиши будут показаны путем вычисления $x.Keys:

$x.Keys

Это напечатает:

one
two

Если я добавлю еще один ключ с именем keys, он переопределяет уже существующий элемент:

$x['Keys'] = 42

$x.Keys

Это теперь печатает:

42

Я не уверен, если я найти такое поведение желательным. Я ожидал, что $x.keys напечатает имена ключей и $x['keys'] напечатает 42.

Можно ли как-нибудь добавить ключ с именем Keys без переопределения элемента Keys?

1 Ответ

3 голосов
/ 23 марта 2020

В вашем примере свойство члена Keys все еще существует. Он просто больше недоступен с использованием синтаксиса оператора членского доступа object.property. Вы можете увидеть свойство, углубившись в подсвойства PSObject.

$x.PSObject.Members['Keys'].Value

В документации для Ha sh Таблицы рассматривается сценарий столкновения свойств. Для этих случаев рекомендуется использовать hashtable.psbase.Property.

$x.PSBase.Keys

Для случаев, когда столкновения непредсказуемы, вы можете использовать метод скрытого члена get_Keys(), как в этот вопрос .

$hash.get_Keys()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...