2016-08-19 3 views
-4

У меня есть этот класс в C#Массив Массив Массив C#

public static class Fases 
{ 
    public static int [,,] fase1 = new int[, , ] { 
     {{1},{1 ,3}}, 
     {{2},{2, 2, 2}, {2, 2, 2 }}, 
     {{2}, {3, 1, 1, 1}, {3, 1, 1, 1}} 
    }; 
} 

и когда я

Fases.fase1[0, 1, 1] 

он бросает IndexOutOfRangeException

Спасибо!

+6

вы не должны получить доступ к массивы, такие как 'Fases.fase1 [0] [1] [1] '? – Andrew

+3

Этот код не компилируется. –

+0

Это не скомпилируется. См. [Многомерная инициализация массива] (https://msdn.microsoft.com/en-IN/library/2yd9wwz4.aspx) –

ответ

1

Что у вас есть, это не массив из массива Array, это трехмерный массив. Многомерные массивы должны иметь единую компоновку, ваш код не будет компилироваться из-за того, что внутренние массивы меняются по длине.

Чтобы получить массив Массив Массив код необходимо будет

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     var result = Fases.fase1[0][1][1]; 
     Console.WriteLine(result); 
    } 
} 

public static class Fases 
{ 
    public static int [][][] fase1 = new int[][][] { 
     new int [][] {new int[] {1}, new int[] {1 ,3}}, 
     new int [][] {new int[] {2}, new int[] {2, 2, 2}, new int[] {2, 2, 2 }}, 
     new int [][] {new int[] {2}, new int[] {3, 1, 1, 1}, new int[] {3, 1, 1, 1}} 
    }; 
} 

which compiles and runs

+0

Обратите внимание, что внутренние типы массивов могут быть выведены компилятором. Например: 'new int [] [] {new [] {1}, new [] {1, 3}}}' –