繁体   English   中英

如何使用本地列表作为函数的输入参数

[英]How to use local list as an input parameter for function

我正在为学校做一个项目,并且花了很长时间让它发挥作用。

程序流程如下:

这是使用其结构进行所有统计的函数:

        public struct DescriptiveStat
    {
        public double max, min, sum, avg, var, stddev;
        public string range;
    }

    public static DescriptiveStat GetDescriptiveStat(List<double> data)
    {
        DescriptiveStat result = new DescriptiveStat();
        double sum = 0, sqSum = 0, max = data[0], min = data[0];
        foreach (double x in data)
        {
            sum += x;
            sqSum += Math.Pow(x, 2);
            if (x > max)
                max = x;
            if (x < min)
                min = x;
        }
        int n = data.Count;
        result.sum = sum;
        result.max = max;
        result.min = min;
        result.avg = sum / n;
        result.var = (sqSum - n * Math.Pow(result.avg, 2)) / n;
        result.stddev = Math.Sqrt(result.var);
        return result;
    }

该功能是我老师设置的,不能更改。 它必须采用List<double> data并返回结果。

目前我拥有它,因此当我使用单个变量按“DescriptiveStat”表单中的“生成”按钮时,它会调用我的函数将数据加载到列表中,以准备将其发送到上面的 DescriptiveStat 函数。 这是我的代码:

        public void GetDescriptiveStat()
    {
        List<double> data = new List<double>();
        double temp;
        data.ToArray();
        for(int i = 0; i < 94; i++)
        {
            temp = dblValues[i][0];
            data.Add(temp);
        }

        data.ToList();
        //data.ForEach(Console.WriteLine);

    }

我知道它正在正确地将数据读入列表,但是我在使用此本地列表作为函数DescriptiveStat GetDescriptiveStat(List<double>data)的参数时遇到问题 - 当我尝试插入类似double result = Mathtool.GetDescriptiveStat(data); 它给了我错误:

  • 无法将类型“MultivariateStatistics.Mathtool.DescriptiveStat”隐式转换为“double”

任何人都可以帮助我做错什么,或者我如何使用列表作为函数的参数?

谢谢你。

首先,您不必将列表转换为数组( data.ToArray() ),然后再转换回列表( data.ToList() )。 Second 而不是void让您的函数返回List<double>如下所示:

public List<double> GetDescriptiveStat()
{
    List<double> data = new List<double>();
    for (int i = 0; i < 94; i++)
    {
        data.Add(dblValues[i][0]);
    }
    return data;
}

现在,因为您的函数GetDescriptiveStat()返回一个列表,您可以将其作为输入参数发送到教师函数GetDescriptiveStat(List<double> data)

DescriptiveStat myData = GetDescriptiveStat(GetDescriptiveStat());

也许有更好的方法可以做到这一点,但您明确表示教师功能无法更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM