我正在尝试根据键将值放入字典中...例如,如果在键的列表中索引为0的位置有一个字母"a",我想将索引为0的val添加到字典内具有键"a"的列表中(字典(键为"a",索引为0,val为索引为0)...字典(键为"b",索引为2,val为索引为2))。
我期望得到这样的输出:
在listview lv1中:1、2、4,在listview lv2中:3、5
我得到的是在两个listview中都是3、4、5
List<string> key = new List<string>();
List<long> val = new List<long>();
List<long> tempList = new List<long>();
Dictionary<string, List<long>> testList = new Dictionary<string, List<long>>();
key.Add("a");
key.Add("a");
key.Add("b");
key.Add("a");
key.Add("b");
val.Add(1);
val.Add(2);
val.Add(3);
val.Add(4);
val.Add(5);
for (int index = 0; index < 5; index++)
{
if (testList.ContainsKey(key[index]))
{
testList[key[index]].Add(val[index]);
}
else
{
tempList.Clear();
tempList.Add(val[index]);
testList.Add(key[index], tempList);
}
}
lv1.ItemsSource = testList["a"];
lv2.ItemsSource = testList["b"];
解决方法:
将 else 代码段替换为:
testList.Add(key[index], new List { val[index] });
感谢大家的帮助 =)
tempList
,因为“b”尚未在testList中。 因此,您最终得到包含{3,4,5}的tempList
;字典中两个元素的值都是对同一对象的引用。 - sigil