[英]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.