我认为以下代码段不起作用(数组项未修改)是否正确,因为数组是整数,它是值类型。
class Program
{
public static void Main()
{
int[] ints = new int[] { 1,2 };
Array.ForEach(ints, new Action<int>(AddTen));
// ints is not modified
}
static void AddTen(int i)
{
i+=10;
}
}
如果示例使用字符串数组,这同样适用,大概是因为字符串是不可变的。
我的问题是:-
有没有解决的办法?我无法更改回调方法的签名 - 例如通过添加 ref 关键字并且我不想用类包装值类型 - 这可以工作......
(当然,我可以简单地编写一个老式的 foreach 循环来做到这一点!)