給定一個有序字典,我想獲取索引 0 處的鍵。我當然可以做一個回圈,獲取第一次迭代的鍵并立即跳出回圈。但我想知道是否有辦法直接做到這一點?我的 Google-Fu 沒有出現任何東西,在黑暗中拍攝也失敗了。我嘗試過類似的事情
$hash[0].Name
和
$hash.GetEnumerator()[0].Name
我發現this discussion about doing it in C#,這導致了這個
[System.Collections.DictionaryEntry]$test.Item(0).Key
但這也失敗了。這只是無法完成的事情,還是我走錯了路?
uj5u.com熱心網友回復:
使用.Keys集合:
$orderedHash = [ordered] @{ foo = 1; bar = 2 }
# Note the use of @(...)
@($orderedHash.Keys)[0] # -> 'foo'
筆記:
的使用
@(...),該陣列的子運算式算子,列舉了.Keys收集和收集其在元件[object[]]陣列,這使得能夠通過位置索引的訪問。該
.Keys集合本身只實作System.Collections.ICollection介面,支持列舉,而不是索引訪問。@(...)啟用索引功能將不再需要在未來的PowerShell版本,有時后期v7.2.1,這要歸功于發起的改善鐵通過GitHub的問題#56835:在.Keys隨后的收集將實作System.Collections.IList介面,不支持位置索引。請注意,此更改僅適用于 有序哈希表 ([ordered] @{ ... },System.Collections.Specialized.OrderedDictionary),不適用于常規(無序)哈希表(@{ ... }) 或實作System.Collections.IDictionary介面的其他型別。
.Name是 PowerShell 提供的別名屬性;包含每個System.Collections.DictionaryEntry鍵的型別原生屬性是.Key
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/405498.html
標籤:
