c# - 使用 Array.Foreach 和 lambda 表达式修改数组

标签 c# arrays foreach lambda

我正在尝试修改数组的值,但它没有被修改:

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/

相关文章:

c# - 如何以编程方式单击节点?

c++ - 根据 gc 值对整个结构数组进行排序

c++ - "for each"是否保证可以与更改数组一起使用?

php - 在 PHP 中的 for 和 foreach 循环中调用函数失败

c# - 找不到与请求 URI 匹配的 HTTP 资源 - Web API + Angular

c# - 牛顿 json 默认字符串值不起作用?

javascript - 将数组值拆分为当前数组内的第二个数组

php - 在表内运行 foreach 循环时出现问题

c# - 使用 Unity 解析 Interface<T>

C# - 如何防止光标在当前行填满时跳转到下一行