簡體   English   中英

如何訪問詞典 <TKey, TValue> C#中的.Item屬性

[英]How to access Dictionary<TKey, TValue>.Item Property in C#

我是C#/ .Net的新手,並且遇到類Dictionary的問題。 我創建了一個組字典並添加了一個項目(或更多項目,現在沒關系):

Dictionary<int, ListViewGroup> groups = new Dictionary<int, ListViewGroup>();
groups.Add(1, new ListViewGroup("Group1"));

我想通過它的鑰匙找到我的小組。 在文檔中,它說有一個Item屬性,我可以直接訪問或通過索引器訪問。 但是,當我嘗試直接訪問它時:

ListViewGroup g = groups.Item(1);

我的編譯器說在Dictionary類中沒有屬性Item的定義。 有人能解釋一下嗎? 謝謝。

Item是一個索引器,您可以通過查看定義來驗證它:

public TValue this[TKey key] { get; set; }

只需使用索引器語法按鍵訪問元素:

ListViewGroup g = groups[1]; 
Console.WriteLine (g.Header); //prints Group1 

注意:如果groups字典中不存在具有此類鍵的條目,則會拋出KeyNotFoundException 例如, groups[2]將在您的情況下拋出異常。

使用groups[n]

如果你看一下說明書Dictionary<TKey, TValue>.Item ,你會發現:

此屬性提供了使用以下C#語法訪問集合中特定元素功能: myCollection [key]

或者在網上搜索“C#索引器”:

索引器教程(C#)

定義索引器允許您創建類似“虛擬陣列”的類。 可以使用[]數組訪問運算符訪問該類的實例

在這種情況下,索引器或Item永遠不會被直接訪問。

您收到錯誤,因為在基本級別的字典類中沒有名為Item的屬性。

Dictionary<int, ListViewGroup> groups = new Dictionary<int, ListViewGroup>();
groups.Add(1, new ListViewGroup("Group1"));

ListViewGroup g = groups.Item(1);

ListViewGroup g = groups[1];

從實際的理解角度來看(我要說的只是基本的理解)字典本質上是一個數組,但不是被迫使用數字,以便你可以使用你喜歡的任何數字甚至字符串。

new Dictionary<int, ListViewGroup>

在你的詞典中

1    Group1

groups [1]將檢索Group1。

要真正理解字典的酷感,就是使用字符串鍵時。

new Dictionary<string, ListViewGroup>

所以,如果你這樣做

groups.Add("mykey1", new ListViewGroup("Group1"));

groups [“mykey1”]將檢索Group1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM