我正在尝试修改数组的值,但它没有被修改:
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(",", "");
或者:
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(",", ""));
关于c# - 使用 Array.Foreach 和 lambda 表达式修改数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17037459/