我正在使用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/

10-11 05:37