C#数组列表加数组列表
本文关键字:列表 数组 | 更新日期: 2023-09-27 18:22:05
假设我们有2个数组列表1数组Premijos具有{0.2,0.3,0.1,0,4}2数组Indeliai有{15000、14000、13000、12000}
应该是这样的15000*0.2+140000*0.3+13000*0.1+12000*0.4我的代码
public double ImtiVidurkiKiekvienam()
{
double v = 0;
for (int i = 0; i < premijos.Count; i++)
{
v += premijos[i] * ind[i];
}
return v;
}
您的问题有两种解决方案。
第一种是使用Convert.ToDouble
:
for (int i = 0; i < premijos.Count; i++)
{
v += Convert.ToDouble(premijos[i]) * Convert.ToDouble(ind[i]);
}
但请记住,它可以抛出异常。
正如评论中所说,第二个是使用List<double>
。
您得到的是Operator '*' cannot be applied to operands of type 'object' and 'object'
",因为ArrayList包含对象。它不知道它们的实际类型。所以您需要在相乘时手动转换它们。假设premijos
是float
的ArrayList
,ind
是int
的ArrayList
,您可以将循环更改为:
for (int i = 0; i < premijos.Count; i++)
{
v += float.Parse(premijos[i].ToString()) * int.Parse(ind[i].ToString());
}
这里我们是float.Parse
和int.Parse
分别将"object"解析为float和int。当然ArrayList
现在已经过时了。只需使用数组(float[]
或int[]
)或类似List<T>
的泛型集合
如果您使用float[]
和int[]
作为集合,那么使用LINQ可以缩短您的方法,如下所示:
public double ImtiVidurkiKiekvienam()
{
return premijos.Select((num, i) => num * ind[i]).Sum();
}