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

使用array修改array.Foreach和lambda表达式