Dictionary<long, long> test = new Dictionary<long, long>();
long[] keyArray= new long[] { 1, 2, 3, 4 };
long[] valueArray= new long[] { 4, 3, 2, 1 };
問題一:
我試過了
for (var i = 0; i < keyArray.Length; i )
{
test.Add(new KeyValuePair<long, long>(keyArray[i], valueArray[i]));
}
但是,我得到
There is no argument given that corresponds to the required formal parameter 'value' of 'Dictionary<long, long>.Add(long, long)'
我不知道為什么。
問題 2 如何使這些作業更具可擴展性?例如,我的陣列可以更大。對于這種情況,相同的方法是否合乎邏輯?
uj5u.com熱心網友回復:
Dictionary<TKey,TValue>.Add(TKey, TValue)需要 2 個引數,首先是 key,其次是 value,而不是 one KeyValuePair,因此您需要稍微更改代碼:
for (var i = 0; i < keyArray.Length; i )
{
test.Add(keyArray[i], valueArray[i]);
}
請注意,Add如果您嘗試添加已經存在的密鑰,則會拋出。如果您預計重復鍵并且可以用稍后的鍵靜默覆寫值,您可以使用indexer:
for (var i = 0; i < keyArray.Length; i )
{
test[keyArray[i]] = valueArray[i];
}
uj5u.com熱心網友回復:
LINQ 變體:
var test = keyArray.Zip(valueArray).ToDictionary(x => x.First, x => x.Second);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/447814.html
