我对c#中的列表和字典有一个奇怪的疑问
在列表中,我们使用以下方法将项目添加到列表
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> list = new List<int>();
list.Add(2);
list.Add(3);
list.Add(5);
list.Add(7);
}
}
在字典中我们添加这样的项目......
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Dictionary<string, int> d = new Dictionary<string, int>();
d.Add("cat", 2);
d.Add("dog", 1);
d.Add("llama", 0);
d.Add("iguana", -1);
}
}
我不知道到底有什么区别,但在字典中我们添加项目,如(键,值)对,而在列表中我们只添加项目而不指定任何键..
谁能澄清一下?
最佳答案
IDictionary
用于键->值映射,ICollection
用于相似对象的集合。
ICollection
是类似对象集合的接口(interface):表单上的控件、列表中的元素、XML 标记中的属性等等。从 .NET 2.0 开始,有一个通用版本,因此您可以将整数集合称为 ICollection<int>
。 .
IDictionary 是一个接口(interface),用于将一种类型的对象或值映射到另一种类型的对象或值。它像一本真正的字典或电话簿一样工作:你在脑海中有一个“键”,比如一个人的名字,当你查找它时,你会得到一些由该键标识的信息,如地址或电话号码。每个键只能列出一次,但仍然允许两个不同的键具有相同的值。这在 .NET 2.0 中也是通用的,因此键为字符串且值为整数的字典将是 IDictionary<string,int>
。 .
字典实际上是键/值对的集合:您可以使用 IDictionary<int,string>
作为ICollection<KeyValuePair<int,string>>
,并且您可以使用 Keys 和 Values 属性将键和值作为单独的集合进行访问。
两者都是 ICollection
和 IDictionary
是无序的,这意味着尽管您可以使用 CopyTo
按某种顺序检索元素方法或 foreach 循环,该顺序没有特殊含义,并且可能会无缘无故地更改。这是 ICollection
之间的主要区别和 IList
: 列表让您可以将项目放在特定位置,就像数组一样,它们会一直留在那里直到您移动它们。
关于c# - c#中list<>和dictionary<>有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914830/