如何重载我的函数,以便它可以在c#中使用数组?

时间:2016-11-06 23:59:59

标签: c#

我编写了一个函数,它似乎适用于两个值(int r,int x),但现在我需要重载它并使用数组,以便它采用(int r,array)。我怎么会这样呢?数组的大小在这里并不重要,它将采用少数数字,如8 27 64等。

  static double rthRoot (double r, double x)
    {

        double y = double.NaN;
        if (x > 0)
        {
            y = Math.Exp((Math.Log(x)) / r);
        }

        if (r % 2 != 0)
        {
            if (x < 0)
            {
                y = -(Math.Exp((Math.Log(Math.Abs(x))) / r));
            }
        }

        return y;

    }int[] myArray;
        myArray = new int[] { 8, 27, 64, 125 };

我想重载此函数但不是双x我想使用一个数组,如最后一个

2 个答案:

答案 0 :(得分:0)

过载你的意思是这样的吗?

    static double rthRoot(double r, double x) //1
    {
        //original
        double y = double.NaN;
        if (x > 0)
        {
            y = Math.Exp((Math.Log(x)) / r);
        }

        if (r % 2 != 0)
        {
            if (x < 0)
            {
                y = -(Math.Exp((Math.Log(Math.Abs(x))) / r));
            }
        }

        return y;

    }
    static double rthRoot(double r, int[] x) //2
    {
        //overload
        double y = double.NaN;
        //whatever

        return y;

    }

如果您为第二个参数传递int[],则会转到方法2。

答案 1 :(得分:0)

这是你之后的事情吗?

static double[] rthRoot(double r, double[] xs)
{
    return xs.Select(x => rthRoot(r, x)).ToArray();
}

static double[] rthRoot(double r, int[] xs)
{
    return xs.Select(x => rthRoot(r, (double)x)).ToArray();
}

两者都依赖于您当前的rthRoot定义。