2017-07-25 178 views
-4

之間的區別這個問題已經回答hereC# - 什麼是元組和字典和列表


,我想在我的應用程序使用的元組。所以我想區分Tuple,Dictionary和List。

Dictionary<int, string> dic = new Dictionary<int, string>(); 
Tuple<int, string> tuple = new Tuple<int, string>(); 
List<int> list = new List<int>(); 

這三者有什麼區別?

+0

是否真的像'名單'? – royalTS

+1

你的清單是否可以編譯? –

+0

「這個問題已經在這裏回答了」爲什麼再問一次? – HimBromBeere

回答

2

首先,據我所知,沒有列表,它有兩個類型參數 - 所以你的名單既可以是List<int>List<string>(或SortedList<int,string>,但是這是一個不同的類)。

A Tuple<T1, T2>包含兩個值 - 在這種情況下一個int和一個字符串。
您可以使用Tuple將項目(可能是不同類型的)綁定在一起。
這在許多情況下可能很有用,例如,您想要從方法中返回多個值。
我個人討厭Item1,Item2屬性名,所以我可能會在我的代碼中使用Tuples周圍的包裝類。

A Dictionary<TKey, TValue>KeyValuePair<TKey, TValue>的集合。
字典將鍵映射到值,以便您可以具有例如人物字典和每個人的SSN作爲關鍵字。

A List<T>T的集合。
您可以通過使用該指數,Find方法,或者乾脆LINQ獲取單個項目(因爲它實現IEnumerable<T>

1

列表可以按特定順序存儲一系列對象,以便您可以索引列表或迭代列表。列表是一種可變類型,意味着列表可以在創建後進行修改。

元組與列表類似,除了它是不可變的。列表和元組之間也存在語義差異。引用Nikow的回答:

元組有結構,列表有順序。

字典是一個鍵值存儲。它不是有序的,而且它要求密鑰是可散列的。按鍵快速查找。

1

因此,對於DictionaryList之間的區別,您已經看到question you linked to。那麼什麼是Tuple?通過MSDN:

元組是具有特定數量和值序列的數據結構。 Tuple<T1, T2>類表示一個2元組或對,它是具有兩個組件的元組。 2元組類似於KeyValuePair<TKey, TValue>結構。

而另外兩個數據結構代表不同集合項(通用要聲明的任何類型)的Tuple<T1,....>是包含屬性的預定量的單個項目 - 類似限定與幾類屬性。

由於兩個第一個是項目的集合,而一個元組是單個項目,他們在與他們做什麼方面扮演着非常不同的角色。

瞭解更多關於

此外,你可以看看What requirement was the tuple designed to solve?

0

當你鏈接的答案討論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開始,有一個更新,更簡潔的語法來返回元組。