Car*_*ras 4 c# arrays foreach lambda
我正在尝试修改数组的值,但它不会被修改:
string buzones = File.ReadAllText("c:\\Buzones");
string[] buzoneslist = buzones.Split(',');
Array.ForEach(buzoneslist, x =>
{
x = x.Replace(",", "");
});
Run Code Online (Sandbox Code Playgroud)
这就像我在做一个string.Replace而没有将结果值设置为变量:
s.replace(",", ""); 代替 s=s.replace(",", "");
是否有可能在lambda表达式中完成?
Blo*_*ard 17
不,你在枚举它时不能修改数组ForEach,并且字符串是不可变的,所以没有任何函数可以就地修改实例.
你可以这样做:
for (int i=0; i<buzoneslist.Length; i++)
buzoneslist[i] = buzoneslist[i].Replace(",", "");
Run Code Online (Sandbox Code Playgroud)
要么:
buzoneslist = buzoneslist.Select(t => t.Replace(",", "")).ToArray();
Run Code Online (Sandbox Code Playgroud)
我想如果你真的想使用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]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
buzoneslist.ChangeEach(t => t.Replace(",", ""));
Run Code Online (Sandbox Code Playgroud)