2009-10-17 8 views
3

Comment je n'initialisons:Initialiser int [] [,] en C#

public const int[][,] Map = ... 

Je voudrais faire quelque chose comme ceci:

public const int[][,] Map = { 
    { // Map 1 
     {1, 1, 1, 1}, 
     {1, 1, 1, 1}, 
     {1, 1, 1, 1}, 
     {1, 1, 1, 1}, 
    }, 
    { // Map 2 
     {1, 1, 1, 1}, 
     {1, 0, 0, 1}, 
     {1, 0, 0, 1}, 
     {1, 1, 1, 1}, 
    }, 
    // etc. 
}; 

Je ne veux pas créer un int[,,] Map , parce que quelque part ailleurs que je veux faire:

loader.Load(Map[map_numer]); // Load method recieve an int[,] 
+3

pour votre information: " const "means" est un nombre ou une chaîne déterminé par la compilation ". "readonly" signifie "ce champ est initialisé une fois puis ne change jamais". Notez qu'un champ readonly contenant un tableau, le FIELD ne peut pas être changé pour faire référence à un tableau différent, mais les éléments du tableau peuvent être changés; Si vous souhaitez que les éléments du tableau ne soient pas modifiés, pensez à utiliser une autre structure de données, telle que ReadOnlyCollection. –

Répondre

9
int[][,] a = new int[][,] 
{ 
    new int[,] 
    { 
     {1, 1, 1, 1}, 
     {1, 1, 1, 1}, 
     {1, 1, 1, 1}, 
     {1, 1, 1, 1}, 

    }, 
    new int[,] 
    { 
     {1, 1, 1, 1}, 
     {1, 0, 0, 1}, 
     {1, 0, 0, 1}, 
     {1, 1, 1, 1}, 
    } 
}; 
+0

Merci! Cela fonctionne, mais 'Map' ne peut pas être' const' (Le compilateur me jette une erreur si 'Map' est' const' –

+2

vous pouvez essayer d'utiliser le mot-clé readonly au lieu de – Overdose

+0

'readonly'. C# et je n'ai jamais vu le mot-clé 'readonly', je dois me rappeler la prochaine fois. –