1
根據MSDN documentation,Tuple objects Equals方法將使用兩個Tuple對象的值。dictionary.TryGetValue vs FirstOrDefault
爲什麼以下不會產生相同的結果:
[Test]
public void TestTupleWithDictionary()
{
Dictionary<Tuple<string, string>, string> values = new Dictionary<Tuple<string, string>, string>();
values.Add(new Tuple<string, string>("1", "1"), "Item 1");
values.Add(new Tuple<string, string>("1", "2"), "Item 2");
Assert.IsNotNull(values.FirstOrDefault(x => x.Key == new Tuple<string, string>("1", "2")));
string value;
values.TryGetValue(new Tuple<string, string>("1", "2"), out value);
Assert.IsNotNullOrEmpty(value);
}
爲什麼values.FirstOrDefault(x => x.Key == new Tuple<string, string>("1", "2"))
回報null
其中作爲values.TryGetValue(new Tuple<string, string>("1", "2"), out value);
找到正確的鍵和返回值?
這與'values.TryGetValue(新元組(「1」,「2」),out值)有何不同?'因爲我也在構造一個新的元組 –
@TjaartvanderWalt: *新元組,每次迭代都不是新元組。假設沒有散列衝突,'TryGetValue'將使用散列碼在常量時間內查找匹配條目。 –