Переполнение Powershell Hashtable Count и Keys Properties

Постановка задачи: Свойства Count и Keys могут быть перегружены хеш-значением и не возвращать ожидаемые значения.

Мой код Powershell это:

$hash = @{}
$hash.one = "Number 1"
$hash.two = "Number 2"

"Count is [{0}]" -f $hash.Count
$hash.Count = "Count's Hash Value"
"Count is now [{0}]" -f $hash.Count

Мой вывод такой:

Count is [2]
Count is now [Count's Hash Value]

Свойство Count перегружено! Это может привести к тому, что пользователям будет очень сложно диагностировать ошибки. Смутил меня на некоторое время. Та же проблема относится к «Ключам» или фактически к любой Собственности.

Есть ли у вас какие-либо мысли о наилучшей практике, чтобы избежать этого? Может быть, другая System.Collection? или префикс всех ключей с таким символом, как:

$key = ":" + $key 

Тем не менее, это не очень элегантно. Даже теперь, когда я знаю проблему, я подозреваю, что забуду и снова совершу ту же ошибку.

Я лично думаю, что это проблема с определением языка Powershell. . Нотация (как в $ hash.MyKey) не должна быть разрешена для получения значений хеш-функции, только для получения значений свойств. Просто мысль. :-)

Спасибо за вашу помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос