Проблема в том, что вы используете struct
в качестве значения в словаре.
Когда вы пишете: this[srKey]
, вы фактически получаете копию структуры , сохраненной в качестве значения словаря. Таким образом, .irValue1
пытается установить поле на копии (которое скоро исчезнет).
Если вы измените MyValue
на класс, это должно сработать. Это также более уместно, так как вы создаете изменяемый тип , а изменяемые структуры очень редко бывают хорошей идеей.
При этом вы можете заставить это работать, сделав временный файл, установив поля, затем , установив значение в своем словаре:
if (this.ContainsKey(srKey) == true)
{
MyValue tmp = this[srKey];
tmp.irValue1 += irVal1;
tmp.irValue2 += irVal2;
this[srKey] = tmp;
}
Если вы измените MyValue
на класс вместо структуры, вы можете написать:
MyValue tmp = this[srKey];
tmp.irValue1 += irVal1;
tmp.irValue2 += irVal2;
Так как сохраненное значение будет ссылкой, это изменит то, что вы хотите, не требуя большого количества словарных поисков.