2010-12-21 48 views
0

我正在使用一種方法填充數組,但是當嘗試使用該方法分配hole數組並在方法中返回已填充數組時,我收到同一問題的兩個錯誤 !Array-Method調試問題

我對問題的線路

static void Main(string[] args) 
{ 
uint n = uint.Parse(Console.ReadLine()); 
uint m = uint.Parse(Console.ReadLine()); 
int[,] array=new int [n,m]; 
array=FillArrayMethodC(n,m); //Cannot implicitly convert type 'int' to 'int[*,*]' 

} 

static int FillArrayMethodC(uint n, uint m) 
{ 
    int[,] a=new int [n,m]; 

    //fill the array 

    return a; //Cannot implicitly convert type 'int[*,*]' to 'int' 
} 

添加了錯誤的明確意見是如何恢復整個數組和分配給它的正確方法!

謝謝您的幫助 BR

+1

爲什麼`FillArrayMethodC`的返回類型不是`int [,]`而不是`int`? – 2010-12-21 16:25:37

+0

Kirk的評論完全正確。無論如何,我不明白你想要做什麼。 – LaGrandMere 2010-12-21 16:28:22

+0

只需使用方法填充數組! – kidwon 2010-12-21 16:31:35

回答

3

更改FillArrayMethod的返回類型。

static int[,] FillArrayMethodC(uint n, uint m) 
1

目前還不清楚是否要在您的Main或您的填充方法中創建一個新的數組。它看起來像你可能真的想這樣的:

static void Main(string[] args) 
{ 
    uint n = uint.Parse(Console.ReadLine()); 
    uint m = uint.Parse(Console.ReadLine()); 
    int[,] array=new int [n,m]; 
    FillArrayMethodC(array, n, m); // pass array into "fill" method 
} 

static void FillArrayMethodC(int[,] a, uint n, uint m) 
{ 
    //fill the array 
    ... 
    // nothing to return 
} 

這裏發生的事情是,你的主要功能是創建陣列,並將其傳遞到填充方法。 fill方法不會創建數組,所以它不會返回任何東西。

1

因爲您已經創建了它,所以不需要在FillArrayMethodC()方法中創建數組。如果該方法只是填充數組並需要知道數組維數,則可以將該數組傳遞給方法並獲取該方法內的維數。我懷疑你想要這樣的東西:

static void Main(string[] args) 
    { 
     uint n = uint.Parse(Console.ReadLine()); 
     uint m = uint.Parse(Console.ReadLine()); 
     int[,] array = new int[n, m]; 
     FillArrayMethodC(array); 

    } 

    static void FillArrayMethodC(int[,] arr) 
    { 

     int numRows = arr.GetLength(0); 
     int numCols = arr.GetLength(1); 

     for (int i = 0; i < numRows; i++) 
      for (int j = 0; j < numCols; j++) 
      { 
       // Fill your array here, e.g.: 
       arr[i, j] = i * j; 
      } 

     return; 
    }