2012-05-05 3 views
1

Я создаю игру с использованием C# XNA.
У меня есть TileMap хранящегося в int[,] массиве, как это:Как я могу вернуть int [,] внутри метода?

int[,] Map = 
    { 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
    }; 

Мне любопытно, о том, как я мог бы принять этот тип массива Map[,] моим классов конструктора и даже в методах, если это возможно и возвращать массив?

Я хочу вернуть int[,] так же, как это:

public int[,] GetMap() 
    { 
     return 
    int[,] Map1 = 
    { 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
    };; 
    } 
+10

вы пробовали это? Что вы пробовали? Какая ошибка? –

+0

Прочтите это: http://msdn.microsoft.com/en-us/library/1h3swy84.aspx – Euphoric

ответ

2

Я думаю, что вы хотите:

public int[,] GetMap() 
{ 
    return new [,] 
    { 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
    }; 
} 

также может быть:

public int[,] GetMap() 
{ 
    int [,] map = new [,] 
    { 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
    }; 

    return map; 
} 
+0

Спасибо, это то, что я искал. – user1376460

1
void Method(int[,] map) 
{ 
    // use map here 
} 

int[,] MethodWithReturn() 
{ 
    // create Map here 
    return Map; 
} 
+0

Как я могу вернуть массив? – user1376460

+0

@ user1376460 Errr ... вы пробовали 'return Map;'? Что вы пробовали и какие у вас проблемы? Отправьте свой код и сообщение об ошибке, которое вы получите. –

+0

Возможно, вы неправильно поняли мой вопрос. – user1376460

0
public int[,] GetMap() 
{ 
    int[,] map = new int[,] 
    { 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
     {1, 1, 1, 1, 1, 1, 1, 1 }, 
    }; 

    return map; 
} 

Вы не можете использовать неявное объявление с многомерными массивами, поэтому вам нужно сначала объявить массив, а затем вернуть его.

+0

Это чисто неправильно. Вы можете вернуть его сразу. – SimpleVar

+0

Возможно, вы правы. Я знаю, что вы не можете использовать var таким образом, но, возможно, возврат разрешен. – Chris

+0

Вам не нужно верить. Просто проверьте это и убедитесь сами. – SimpleVar

0

Вы можете действительно сделать:

return new int[,] 
      { 
       {1, 1, 1, 1, 1, 1, 1, 1}, 
       {1, 1, 1, 1, 1, 1, 1, 1}, 
       {1, 1, 1, 1, 1, 1, 1, 1} 
      }; 

Но если вы спрашиваете о том, как бы вы справиться с ИНТ [,] снаружи, когда вы не знаете, границы ... Тогда:

private static int[,] CreateMap(out int height) 
{ 
    height = 3; 

    return new int[,] 
       { 
        {1, 1, 1, 1, 1, 1, 1, 1}, 
        {1, 1, 1, 1, 1, 1, 1, 1}, 
        {1, 1, 1, 1, 1, 1, 1, 1} 
       }; 
} 

Использование снаружи:

int height; 
int[,] map = CreateMap(out height); 

int width = map.Length/height; 

for (int i = 0; i < height; i++) 
{ 
    for (int j = 0; j < width; j++) 
    { 
     Console.WriteLine(map[i, j]); 
    } 
} 
Смежные вопросы