使用array修改array.Foreach和lambda表达式
本文关键字:array lambda 表达式 Foreach 修改 使用 | 更新日期: 2023-09-27 18:17:53
我试图修改数组的值,但它没有得到修改:
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(",", ""));