指定索引处的 OrderedDictionary 键名
OrderedDictionary key name at specified index
给定一个有序的字典,我想得到索引0处的键。我当然可以做一个循环,得到第一次迭代的键并立即跳出循环。但我想知道是否有办法直接做到这一点?
我的Google-Fu什么也没有发现,而且在黑暗中的一些射击也失败了。我尝试过
$hash[0].Name
和
$hash.GetEnumerator()[0].Name
我发现 this 关于在 C# 中执行此操作的讨论,这导致了这个
[System.Collections.DictionaryEntry]$test.Item(0).Key
但这也失败了。是做不到还是我走错了路?
使用 .Keys
集合:
$orderedHash = [ordered] @{ foo = 1; bar = 2 }
# Note the use of @(...)
@($orderedHash.Keys)[0] # -> 'foo'
注:
使用 @(...)
,array-subexpression operator,枚举 .Keys
集合并将其元素收集在 [object[]]
数组中,这样可以通过位置索引。
.Keys
集合本身只实现了System.Collections.ICollection
接口,支持枚举,不支持索引访问。
@(...)
在 未来的 PowerShell 版本中不再需要启用索引,有时 post -v7.2.1,感谢 iRon via GitHub issue #56835: The .Keys
collection will then implement the System.Collections.IList
interface, which does support positional indexing. Note that this change will only apply to ordered hashtables ([ordered] @{ ... }
, System.Collections.Specialized.OrderedDictionary
), not also to regular (unordered) hashtables (@{ ... }
) or other types implementing the System.Collections.IDictionary
interface. However, iRon has created a follow-up proposal to make the .Keys
property indexable for all (definition-)ordered and sorted dictionaries - see GitHub issue #63537.
发起的改进
.Name
是PowerShell提供的别名属性;包含每个 System.Collections.DictionaryEntry
键的原生类型 属性 是 .Key
给定一个有序的字典,我想得到索引0处的键。我当然可以做一个循环,得到第一次迭代的键并立即跳出循环。但我想知道是否有办法直接做到这一点? 我的Google-Fu什么也没有发现,而且在黑暗中的一些射击也失败了。我尝试过
$hash[0].Name
和
$hash.GetEnumerator()[0].Name
我发现 this 关于在 C# 中执行此操作的讨论,这导致了这个
[System.Collections.DictionaryEntry]$test.Item(0).Key
但这也失败了。是做不到还是我走错了路?
使用 .Keys
集合:
$orderedHash = [ordered] @{ foo = 1; bar = 2 }
# Note the use of @(...)
@($orderedHash.Keys)[0] # -> 'foo'
注:
使用
@(...)
,array-subexpression operator,枚举.Keys
集合并将其元素收集在[object[]]
数组中,这样可以通过位置索引。.Keys
集合本身只实现了System.Collections.ICollection
接口,支持枚举,不支持索引访问。
发起的改进@(...)
在 未来的 PowerShell 版本中不再需要启用索引,有时 post -v7.2.1,感谢 iRon via GitHub issue #56835: The.Keys
collection will then implement theSystem.Collections.IList
interface, which does support positional indexing. Note that this change will only apply to ordered hashtables ([ordered] @{ ... }
,System.Collections.Specialized.OrderedDictionary
), not also to regular (unordered) hashtables (@{ ... }
) or other types implementing theSystem.Collections.IDictionary
interface. However, iRon has created a follow-up proposal to make the.Keys
property indexable for all (definition-)ordered and sorted dictionaries - see GitHub issue #63537.
.Name
是PowerShell提供的别名属性;包含每个System.Collections.DictionaryEntry
键的原生类型 属性 是.Key