【发布时间】:2013-12-24 01:40:33
【问题描述】:
抱歉,如果这是重复的,但找不到任何符合我需要的东西。我有一个对象,其中一个成员是Dictionary对象,定义如下:
public class MyTestObject
{
public int index { get; set; }
// various other members here
public Dictionary<string, bool> MyTestValues { get; set; }
}
我有一个班级列表MyTestObject:
List<MyTestObject> values = new List<MyTestObject>();
我有一个遍历每个值实例的循环和一个遍历字典中 KVP 的子循环
foreach (MyTestObject current in values)
{
foreach (KeyValuePair<string, bool> testCurrent in current.MyTestValues)
{
}
}
在第二个循环中,我需要更改每个 Dictionary 项目的布尔值,这就是我失败的地方。
理想情况下,我希望能够做类似以下的事情:
values[current.index].MyTestValues.Where(t => t.Key == testCurrent.Key).Single().Value = true;
即,它使用索引成员来访问对象中的字段并更新值。不幸的是,这不起作用,因为它说 Value 字段是只读的。
我确定我在这里不必要地感到困惑。任何建议表示赞赏
【问题讨论】:
-
看来你可以直接使用
values[current.index].MyTestValues[testCurrent.Key] = true,除非我有什么误解? -
I am falling down。有什么问题? -
@hamlet - 值字段是只读的。
-
@Andrew 不要尝试直接修改
KeyValuePairs。通过索引器访问字典中的项目。 -
您试图在无效的 foreach 中修改字典的内容?看到这个问题:stackoverflow.com/questions/2260446/…
标签: c#