[英]C# - What is the difference between Tuple and Dictionary and List
首先,AFAIK,没有列表带有两个类型参数-因此您的列表可以是List<int>
或List<string>
(或SortedList<int,string>
,但这是一个不同的类)。
Tuple<T1, T2>
包含两个值-在这种情况下为一个int和一个字符串。
您可以使用元组将项目(可能是不同类型)绑定在一起。
这在许多情况下可能很有用,例如,您想从一个方法中返回一个以上的值。
我个人讨厌Item1
, Item2
属性名称,因此我可能在代码中使用围绕Tuples的包装类。
Dictionary<TKey, TValue>
是KeyValuePair<TKey, TValue>
的集合。
词典将键映射到值,这样您就可以拥有一个人词典,例如,每个人都有他们的SSN作为键。
甲List<T>
是集合T
。
您可以使用索引, Find
方法或简单地使用linq(因为它实现IEnumerable<T>
)来获取单个项。
列表可以按一定顺序存储对象序列,以便您可以索引到列表中,或遍历列表。 列表是可变类型,表示列表创建后可以修改。
元组与列表类似,但它是不可变的。 列表和元组之间在语义上也有所不同。 引用Nikow的答案:
元组具有结构,列表具有顺序。
字典是键值存储。 它不是有序的,并且要求密钥是可哈希的。 通过键快速查找。
因此,对于Dictionary
和List
的区别,您已经看到了链接到的问题 。 那么什么是Tuple
? 通过MSDN:
元组是具有特定数量和值序列的数据结构。
Tuple<T1, T2>
类表示2元组或对,它是具有两个成分的元组。 2元组类似于KeyValuePair<TKey, TValue>
结构。
虽然其他两个数据结构表示不同的项目集合 (泛型为您声明的任何类型),但Tuple<T1,....>
是包含预定义属性数量的单个项目 -类似于定义具有很少属性的类。
由于前两个是项的集合,而元组是单个项,因此在处理它们方面,它们扮演着截然不同的角色。
阅读更多
此外,您还可以查看元组旨在解决什么要求?
当您链接的答案讨论List<T>
和Dictionary<int, T>
之间的区别时, Tuple<int, string>
。
从MSDN
表示2元组或对。
元组是一对值,与其他类型相反,它们代表集合的种类。 想想一个方法,该方法返回最后一个错误的错误代码和字符串(我不会这样写代码,而是想出办法)
Tuple<int, string> GetLastError()
{
...
}
现在您可以像
var lastError = GetLastError();
Console.WriteLine($"Errorcode: {lastError.Item1}, Message: {lastError.Item2}");
这样,如果要返回复合值,则不必创建类。
请注意 :从C#7开始,有一种更新,更简洁的语法用于返回元组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.