2013-10-12 95 views
4

如何乘以list <double>的内容?如何乘以双打列表中的所有元素?

List<double> mult=new List<double>{3, 5, 10}; 

到目前为止,我有:

double r=0.0; 
for(int i=0;i<mult.Count;i++) 
{ 
    r=mult[i]*mult[(i+1)]; 
} 
+0

不明确的问题。你想达到什么目的?你甚至尝试运行你的代码示例? –

回答

13

要解决你的循环,开始1.0然后在列表中繁殖的每个项目,像这样:

double r = 1.0; 
for(int i = 0; i < mult.Count; i++) 
{ 
    r = r * mult[i]; // or equivalently r *= mult[i]; 
} 

但为了简单起见,你可以使用一点Linq与Aggregate扩展方法:

double r = mult.Aggregate((a, x) => a * x); 
+0

这种聚合方法是如何工作的? – stackptr

+2

@EdwardKarak'Aggregate'方法从列表的第一个元素开始,并使用下一个变换的结果对每个后续元素应用一些变换(在这种情况下,只是相乘)。有关更多信息,请参阅文档。 –

+0

参数((a,x)=> a * x)如何? – stackptr

2

你是什么意思乘?如果你想计算产品,那么你的代码是错误的,并且正确的代码是

double r=1.0; 
for(int i=0;i<mult.Count;i++) 
{ 
    r *= mult[i]; 
}