【发布时间】:2016-06-13 12:26:37
【问题描述】:
问题陈述: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 中)不应被允许用于检索哈希值,仅用于检索属性值。只是一个想法。 :-)
感谢您的帮助。
【问题讨论】:
标签: powershell count key hashtable