我正试图将int类型的列表中的所有数字平方。但是,当我运行代码时,该列表似乎根本没有改变。无法重新分配LINQ语句中的值
public static List<int> SquareList(List<int> root)
{
root.ForEach(x => x = x*x);
return root;
}
x_unit中的测试类。
[Fact]
public void testSqures()
{
var input = new List<int> { 1, 2, 3 };
var expected = new List<int> { 1, 4, 9 };
var result = Square.SquareList(input);
Assert.Equal(expected,result);
}
问题是否foreach
运算符没有更改基础对象?
我需要创建一个新列表吗?或者有没有办法将这个列表转换到位?
从MSDN:修改底层集合在'行动的身体'委托是不受支持并导致未定义的行为。 –
Vikhram
您正在使用值类型,且值类型无法在“操作”委派中更新。您一定需要创建一个新列表。 – NoviceProgrammer