我正在使用Dictionary<int, KeyValuePair<bool, int>>
来保存数据。
我不时需要增加int
中的KeyValuePair
,但由于没有设置程序,它不会让我失望。有没有办法增加它?
代码示例:
Dictionary<int, KeyValuePair<bool, int>> mDictionary =
new Dictionary<int, KeyValuePair<bool, int>>();
mDictionary[trapType].Value++;
//Error: The property KeyValuePair<TKey, Tvalue>>.Value has no setter
最佳答案
不能。KeyValuePair
是不可变的-它也是一个值类型,因此在创建副本后更改Value
属性的值仍然无济于事。
您必须编写如下内容:
var existingValue = mDictionary[trapType];
var newValue = new KeyValuePair<bool, int>(existingValue.Key,
existingValue.Value + 1);
mDictionary[trapType] = newValue;
不过,这很丑陋-您是否真的需要将该值用作
KeyValuePair
?关于c# - 属性 KeyValuePair<TKey, Tvalue>.Value 没有 setter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10580029/