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;
    }

C#数组列表加数组列表

您的问题有两种解决方案。

第一种是使用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包含对象。它不知道它们的实际类型。所以您需要在相乘时手动转换它们。假设premijosfloatArrayListindintArrayList,您可以将循环更改为:

for (int i = 0; i < premijos.Count; i++)
{
    v += float.Parse(premijos[i].ToString()) * int.Parse(ind[i].ToString());
}

这里我们是float.Parseint.Parse分别将"object"解析为float和int。当然ArrayList现在已经过时了。只需使用数组(float[]int[])或类似List<T>的泛型集合
如果您使用float[]int[]作为集合,那么使用LINQ可以缩短您的方法,如下所示:

public double ImtiVidurkiKiekvienam()
{
    return premijos.Select((num, i) => num * ind[i]).Sum();
}