2016-11-06 84 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工作。

相關問題