我正在尝试修改数组的值但不会被修改:
string buzones = File.ReadAllText("c:\\Buzones");
string[] buzoneslist = buzones.Split(',');
Array.ForEach(buzoneslist, x =>
{
x = x.Replace(",", "");
});
就像我正在做一个string.Replace而没有将结果值设置为 变量:
s.replace(",", "");
代替s=s.replace(",", "");
是否可以在lambda表达式中完成?。
答案 0 :(得分:15)
不,你在使用ForEach
枚举数组时无法修改数组,并且字符串是不可变的,因此没有可以就地修改实例的函数。
您可以这样做:
for (int i=0; i<buzoneslist.Length; i++)
buzoneslist[i] = buzoneslist[i].Replace(",", "");
或者:
buzoneslist = buzoneslist.Select(t => t.Replace(",", "")).ToArray();
我想如果你真的想使用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]);
}
}
}
然后:
buzoneslist.ChangeEach(t => t.Replace(",", ""));