1
問題語句 t:Count和Keys屬性可以通過散列值重載並且不返回它們的期望值。Powershell哈希表計數和鍵屬性獲取過載
我的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?或在所有Keys前加上一個字符,例如:
$key = ":" + $key
但是,它不是很優雅。即使現在我知道這個問題,我懷疑我會忘記並再次犯同樣的錯誤。
我個人認爲這是Powershell語言定義的問題。這個。符號(如在$ hash.MyKey中)不應該被允許用於檢索散列值,僅用於檢索屬性值。只是一個想法。 :-)
感謝您的幫助。
感謝。我試了你的答案。他們都工作。我認爲我最喜歡get_Count()和get_Keys()。語法較短。與Powershell的這種特質有潛在的危險。我可以想象客戶擁有多年來一直未被發現的間歇性錯誤。 – Kiwi