roc*_*mar 16 .net c# dictionary list winforms
我对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);
}
}
Run Code Online (Sandbox Code Playgroud)
在字典中我们添加这样的项目......
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我不确切地知道有什么区别,但是在字典中我们添加像(键,值)对的项目,在列表中我们只是添加项而不指定任何键.
有人会澄清这个吗?
SSh*_*bly 33
IDictionary用于键 - >值映射,ICollection用于类似对象的集合.
ICollection是类似对象集合的接口:表单上的控件,列表中的元素,XML标记中的属性等.从.NET 2.0开始,有一个通用版本,因此您可以将整数集合称为ICollection<int>.
IDictionary是用于将一种类型的对象或值映射到另一种类型的接口.它就像一本真正的字典或电话簿:你有一个"钥匙",就像一个人的名字,当你查找它时,你得到一些由该键识别的信息,如地址或电话号码.每个键只能列出一次,但仍允许两个不同的键具有相同的值.这在.NET 2.0中也是通用的,因此字符的键是字符串,其值是整数IDictionary<string,int>.
字典实际上是键/值对的集合:您可以使用a IDictionary<int,string>作为ICollection<KeyValuePair<int,string>>,并且可以使用Keys和Values属性将键和值作为单独的集合进行访问.
这两个ICollection和IDictionary是无序的,也就是说,虽然可以与一些顺序检索元素CopyTo的方法或foreach循环,顺序没有特殊的意义,它可能没有明显的原因而改变.这是ICollection和之间的主要区别IList:列表允许您将项目放在特定位置,就像数组一样,并且它们会一直存在,直到您移动它们为止.
sll*_*sll 11
List<>和Dictionary<,>-其中用于不同的目的有很大不同的数据结构,列表只是一组项目和字典是一组键-值对.
当你拥有一组复杂的对象并想要快速访问时,字典非常有用,比如说ObjectName/ObjectId,在这种情况下你创建的IDictionary<string, TObject>键是ObjectId,Value就是一个对象本身.
一些差异:
O(1)时间复杂度通过键访问项目(值)Dictionary<K,V>是一个关联数组或映射.它是一个可以通过任何类型的值索引的容器.List<T>是一个整数索引数组.它是一个由连续整数索引的容器.因此,本质区别在于容器的索引方式.
不要陷入相信Dictionary<int,T>在语义上等同的陷阱List<T>.不同的是,的转位List<T>是连续的,而可以有间隙在所述分度为Dictionary<int,T>.
| 归档时间: |
|
| 查看次数: |
44755 次 |
| 最近记录: |