在C#中修改集合的模式是什么?

gre*_*man 1 c# collections iterator design-patterns enumerator

这种问题的模式(最佳实践)是什么 - 修改集合中的元素(值)?

条件:

  • 集合的大小不会更改(不删除或添加元素)
  • 修改是就地的

在C++中,它很简单,很好,我只是通过一个集合迭代并更改了元素.但是在C#中迭代(使用枚举器)是只读操作(就C++而言,只有const_iterator可用).

那么,如何在C#中做到这一点?

例如:具有"1,2,3,4"修饰的序列将其改变为"1,2,8,9"而不是"1,2,3"或"1,2,3,4,5".

Jon*_*eet 5

通常你会选择索引:

for (int i = 0; i < foo.Length; i++)
{
    if (ShouldChange(foo[i]))
    {
        foo[i] = GetNewValue(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

更实用的替代方法是创建一个方法,该方法返回包含所需"修改"数据的集合 - 这一切都取决于您想要做什么.