2016-11-06 85 views
-2

我写了一个函数,它似乎适用于两个值(int r,int x),但现在我需要重载该函数并使用数组,以便它需要(int r,array)。我将如何去做这件事?数组的大小在这里不算太重要,它会占用少量的数字,如8 27 64等。我如何重载我的函数,以便它可以在C#中的数组?

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我想用一个数组,如一个是在结束

+4

你的问题不清楚。数组参数与其他类型的参数没有任何区别。您仍然将值传递给方法,并且参数列表指示类型。与任何其他类型一样,重载与数组参数的工作方式相同。编辑你的问题,使其包含一个很好的[mcve],清楚地显示你所尝试的内容,并解释你具体遇到麻烦的原因。一定要包含任何错误或异常的_exact text_,并且对于异常,请包含完整的堆栈跟踪。确保你的问题也解释了你到目前为止所研究的内容。 –

+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

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工作。

相关问题