看来我无法将任意键名添加到hashtable
如果具有该名称的成员已经存在,则不会覆盖该成员。
我创建一个哈希表($x
)并添加两个键,one
and 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
member?
在您的示例中,成员属性Keys
仍然存在。只是不再可以使用成员访问运算符语法来访问它object.property
。您可以通过深入查看该属性PSObject
子属性。
$x.PSObject.Members['Keys'].Value
的文档哈希表 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_hash_tables?view=powershell-7考虑财产冲突的情况。对于这些情况的建议是使用hashtable.psbase.Property
.
$x.PSBase.Keys
对于碰撞不可预测的情况,可以使用隐藏成员方法get_Keys()
as in 这个问题 https://stackoverflow.com/questions/60810458/is-it-correct-to-use-the-get-keys-method-for-collections.
$hash.get_Keys()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)