【问题标题】:Printing a ref variable打印 ref 变量
【发布时间】:2013-03-21 00:02:47
【问题描述】:

我的任务是打印数组中一组数字的平均值和方差,为此我需要引用我所做的 avg。但我不明白我现在如何打印 avg 是什么。当我运行程序时,我目前正在打印 0。这是我的代码:

    static double varianceValue(ref double avg, params double[] intValues)
    {
        double sum = 0;
        double f = 0;
        double number = 0;
        double sv = 0;
        double variance= 0;

        foreach (int value in intValues)
        {
            sum += value;
        }

        for (int i = 0; i < intValues.Length; i++)
        {
            number = intValues[i];
            avg = sum / intValues.Length;
            f = number - avg;
            sv += Math.Pow(f, 2);

        }
        variance = sv / (intValues.Length - 1);
        return variance;

    }
    static void Main(string[] args)
    {
        double avg = 0;
        Console.WriteLine("The avg of the variables in the array are: {0}", varianceValue(ref avg));
        Console.WriteLine("\nThe variance of 11, 13, 17, 19, 23 is: {0}", varianceValue(ref avg, 11.0, 13.0, 17.0, 19.0, 23.0));
        Console.ReadKey();
    }

【问题讨论】:

  • 单步执行程序。
  • 看起来你直接分配给avg(从而覆盖它的值)没有意义让它成为ref参数,而是让它成为out参数或返回一个结构或元组来自函数。
  • 另一个不错的选择是返回Pair&lt;double, double&gt;的函数,包括平均值和方差。

标签: c# variables reference


【解决方案1】:

此时您正在打印零,因为您调用时数组为空

 Console.WriteLine("The avg of the variables in the array are: {0}", varianceValue(ref avg));

首先调用带有数组参数的方差函数(这也将设置平均值)。然后自己调用avg。

static void Main(string[] args)
{
    double avg = 0;
    Console.WriteLine("\nThe variance of 11, 13, 17, 19, 23 is: {0}", varianceValue(ref avg, 11.0, 13.0, 17.0, 19.0, 23.0));
   Console.WriteLine("The avg of the variables in the array are: {0}", avg);
    Console.ReadKey();
}

【讨论】:

  • 嗯,我觉得自己很愚蠢。对此仍然很陌生,订单绝对很重要。我为一个非常愚蠢的问题道歉。感谢您抽出宝贵时间帮助我。
  • @jimjam456 如果这有帮助,请确保接受答案。 =]
  • 确实做到了,我会尽快做到。我很困惑为什么我会因为这个问题而获得负面声誉。我知道这是一个非常简单的答案,但我仍然在学习一切。
  • @jimjam456 确保下次您有问题时,请说明您是“初学者”并且是该语言的新手——这可能有助于解决一些负面问题
猜你喜欢
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多