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(",", ""));