C# 3.0 使用lambda(C#3.0)对循环进行转换
如何转换下面的代码C# 3.0 使用lambda(C#3.0)对循环进行转换,c#-3.0,C# 3.0,如何转换下面的代码 double sumxy = 0; for (int i = 0; i < x.Count; i++) {sumxy = sumxy + (x[i] * y[i]);} double sumxy=0; 对于(int i=0;i
double sumxy = 0;
for (int i = 0; i < x.Count; i++)
{sumxy = sumxy + (x[i] * y[i]);}
double sumxy=0;
对于(int i=0;i
通过使用lambda
我正在使用C#3.0。x和y是双数的列表
谢谢真的没有什么意义,但是如果你想:
Enumerable.Range(0, x.Count).Select(i => x[i] * y[i]).Sum();
如果您使用的是.NET 4,则可以使用运算符:
double sumxy = x.Zip(y, (a, b) => a * b).Sum();
或在.NET 3.5中:
double sumxy = x.Select((value, index) => value * y[index]).Sum();
像这样的
var sumy = Enumerable.Range(0, x.Count).Aggregate((result, i) => result + (x[i]*y[i]);
你为什么要在这里用lambda?@Lucero,因为它太酷了!每个人都在谈论lambda!这可能是解决一切问题的方法/sarcasm@Andrey,rililight。。。我可能很守旧,但我认为LINQ和相关的东西被过度使用了。更不用说其中隐藏的警告了,比如大多数(但不是全部)LINQ操作的延迟执行等等,我觉得这对于许多其他开发人员来说是很难理解的。。。。因为他们不知道自己在做什么