C# 使用array.Foreach和lambda表达式修改数组

C# 使用array.Foreach和lambda表达式修改数组,c#,arrays,foreach,lambda,C#,Arrays,Foreach,Lambda,我正在尝试修改数组的值,但没有修改: string buzones = File.ReadAllText("c:\\Buzones"); string[] buzoneslist = buzones.Split(','); Array.ForEach(buzoneslist, x => { x = x.Replace(",", ""); }); 这就像我在做一个字符串。替换而不将结果值设置为 变量: s.replace(“,”,”)而不是s=s.replace(“,”,”) 可

我正在尝试修改数组的值,但没有修改:

string buzones = File.ReadAllText("c:\\Buzones");
string[] buzoneslist = buzones.Split(',');

Array.ForEach(buzoneslist, x =>
{
    x = x.Replace(",", "");
});
这就像我在做一个字符串。替换而不将结果值设置为 变量:

s.replace(“,”,”)而不是
s=s.replace(“,”,”)


可以在lambda表达式内部完成吗?

不,在使用
ForEach
枚举数组时,不能修改数组,并且字符串是不可变的,因此没有函数可以修改实例

您可以选择:

for (int i=0; i<buzoneslist.Length; i++) 
    buzoneslist[i] = buzoneslist[i].Replace(",", "");
我想如果您真的想使用lambda,您可以编写一个扩展方法:

public static class Extensions {
    public static void ChangeEach<T>(this T[] array, Func<T,T> mutator) {
        for (int i=0; i<array.Length; i++) {
            array[i] = mutator(array[i]);
        }
    }
}

不,永远不会。还有,糟糕的风格。改用
选择
并创建一个新数组。
public static class Extensions {
    public static void ChangeEach<T>(this T[] array, Func<T,T> mutator) {
        for (int i=0; i<array.Length; i++) {
            array[i] = mutator(array[i]);
        }
    }
}
buzoneslist.ChangeEach(t => t.Replace(",", ""));