繁体   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