如何访问Dictionary <tkey,tvalue =“”> .C#中的Item属性</tkey,>

时间:2013-06-04 12:04:35

标签: c# .net properties dictionary

我是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的定义。 有人能解释一下吗? 谢谢。

3 个答案:

答案 0 :(得分:9)

Item是一个索引器,您可以通过查看定义来验证它:

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

只需使用索引器语法按键访问元素:

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

注意:如果KeyNotFoundException字典中没有带有此类键的条目,则会抛出groups。例如,groups[2]将在您的情况下抛出异常。

答案 1 :(得分:3)

使用groups[n]

如果您查看Dictionary<TKey, TValue>.Item Item,可能会发现:

  

此属性提供了使用以下C#语法访问集合中特定元素的功能: myCollection [key]

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

  

the manual

     

定义索引器允许您创建类似“虚拟阵列”的类。 可以使用 [] 数组访问运算符访问该类的实例

在这种情况下,索引器或{{1}}永远不会被直接访问。

答案 2 :(得分:1)

您收到错误,因为在基本级别的字典类中没有名为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