2010-12-21 4 views
0

메서드를 사용하여 배열을 채우지 만 메서드를 사용하여 구멍 배열을 할당하려고 할 때와 메서드에서 채워진 배열을 반환 할 때 같은 문제가 2 개 발생합니다.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

왜 [,]'대신'int'의'FillArrayMethodC'하지'INT의 반환 형식이 : 난 당신이 뭔가를 원하는 것으로 의심? –

+0

Kirk의 의견은 완전히 옳습니다. 어쨌든, 당신이하려는 일을 이해하지 못합니다. – LaGrandMere

+0

메소드를 사용하여 배열을 채우기 만하면됩니다! – kidwon

답변

3

변경 FillArrayMethod의 반환 형식 주셔서 감사합니다.

+0

이 방법을 사용하면 실제로 배열을 두 번 생성합니다. 당신은 한 번만 그렇게해야합니다. – Gabe

1

Main 또는 채우기 방법으로 새 ​​배열을 만들지 여부가 명확하지 않습니다. 실제로 이것을 원할 수도있는 것처럼 보입니다 :

주 기능은 배열을 생성하여 채우기 방법으로 전달한다는 것입니다. fill 메서드는 아무 것도 반환하지 않도록 배열을 만들지 않습니다.

+0

고맙습니다. – kidwon

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; 
    }