c# - c#中list<>和dictionary<>有什么区别

标签 c# .net winforms list dictionary

我对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 属性将键和值作为单独的集合进行访问。

两者都是 ICollectionIDictionary是无序的,这意味着尽管您可以使用 CopyTo 按某种顺序检索元素方法或 foreach 循环,该顺序没有特殊含义,并且可能会无缘无故地更改。这是 ICollection 之间的主要区别和 IList : 列表让您可以将项目放在特定位置,就像数组一样,它们会一直留在那里直到您移动它们。

关于c# - c#中list<>和dictionary<>有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914830/

相关文章:

c# - 有没有一种简单快捷的方法来检查多边形是否自相交?

.net - JavascriptSerializer 或 JavascriptDeserializer 线程的不同实例上的不同线程是否安全

c# - C#中var的初始化

c# - 使用鼠标调整表单大小有效,代码不会低于 178x47

c# - 窗口标题文本颜色的主题资源是什么?

c# - 析构函数、处理方法和终结方法之间的区别

c# - iOS http POST 请求

javascript - 如何访问 jquery 内部数据?

c# - 任务(System.Threading.Task)和线程的区别

c# - System.Drawing.ImageAnimator.Animate 和 System.Drawing.ImageAnimator.StopAnimate 解释