如何修改Dictionary中项目的属性?

时间:2011-05-05 06:58:41

标签: c#

我有一个字典,我想修改字典里面项目的属性,如何实现呢?我可以使用foreach来修改项目的属性吗?我调查了一些帖子,他们说从foreach获得的参考是只读的,不能修改。

class MyClass
{
   public int propA { get; set; }
   public string propB { get; set; }
}

class Foo
{
   private Dictionary<int, List<MyClass>> mItemMap;

   ....
   public void QueryAndModify() {
      // My original thought, find what i want by foreach
      foreach(KeyValuePair<int, List<MyClass>> kvp in mItemMap) {
          foreach(MyClass item in kvp.Value) {
            // Can I modify the propB of item by this way ?
            if (item.propA == 3) {
                item.propB = "I got you.";
            }
          }
      }
   }
}

4 个答案:

答案 0 :(得分:1)

不,您可以就地修改项目。

答案 1 :(得分:0)

我相信你可以修改这些值,但不能从foreach循环中删除字典中的项目。

答案 2 :(得分:0)

您的词典是MyClass实例的REFERENCES的集合。修改实例的属性不会修改存储在字典中的引用。

在迭代集合时,您无法修改COLLECTION(添加,删除项目)。您可以修改集合中引用指向的实例。

我建议你在继续之前获得一本好的C#书并理解价值观和参考资料。

答案 3 :(得分:0)

罗伊说,你可以。

还要考虑重构代码:

public void QueryAndModify()
{
   foreach( List<MyClass> list in mItemMap.Values )
   {
    ...
   }
}

HTH

马里奥