List<double> y = new List<double> { 0.4807, -3.7070, -4.5582,
-11.2126, -0.7733, 3.7269,
2.7672, 8.3333, 4.7023 };
List<double> d1 = y.ForEach(i => i * 2);
Run Code Online (Sandbox Code Playgroud)
错误:只能将赋值,调用,递增,递减和新对象表达式用作语句
怎么了?
谢谢
List<T>.ForEach不执行转换:它为每个项目执行给定的委托,但这就是全部.这就是为什么它有一个void返回类型 - 以及为什么参数类型Action<T>而不是类似的东西Func<T, TResult>.最后一部分是您遇到编译错误的原因.你基本上是想做:
Action<double> = i => i * 2;
Run Code Online (Sandbox Code Playgroud)
这将给你相同的编译错误.
如果你想坚持使用List<T>方法(例如,因为你使用的是.NET 2.0),你可以使用List<T>.ConvertAll:
List<double> d1 = y.ConvertAll(i => i * 2);
Run Code Online (Sandbox Code Playgroud)