我是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的定义。 有人能解释一下吗? 谢谢。
答案 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#索引器”:
定义索引器允许您创建类似“虚拟阵列”的类。 可以使用 [] 数组访问运算符访问该类的实例。
在这种情况下,索引器或{{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