2010-05-04 4 views
1

Ce que je voudrais faire dans mon code est quelque chose comme ça ci-dessous:passer une partie 2D d'un tableau multidimensionnel 3D comme un tableau de paramètres de méthode 2D en C#

public static class DataClass 
{ 
    public static byte[,,] Array3d = { { {0,0},{0,0}},{{0,0},{0,0}}}; 

} 

class MyClass 
{ 
    public MyClass() 
    { 
     someMethod(DataClass.Array3d[0]); 
     someMethod(DataClass.Array3d[1]); 
    } 

    void someMethod(byte[,]) 
    { 
    } 
} 

Je voudrais savoir s'il y a un certain façon de faire ce que j'essaie d'appeler someMethod(). Sinon, que dois-je faire?

Répondre

3

utiliser un tableau en dents de scie à la place:

static byte[,][] array3d 
+1

Celui qui fonctionnerait dans ce cas est 'static byte [] [,] array3d'. Je l'ai essayé ici, mais il a le gros inconvénient de ne pas pouvoir l'initialiser de la façon la plus simple que j'avais prévue. Je suis obligé d'utiliser l'opérateur 'new' et le constructeur statique. –

1

Vous pouvez tout simplement passer votre-gamme 3D à la méthode. Rien ne vous empêche de faire uniquement des opérations sur la sous-section 2D correspondante de la méthode.

Vous pouvez également utiliser une matrice dentelée, mais cela vient à un coût élevé dont je ne suis pas sûr est acceptable si vous utilisez une matrice 3D en premier lieu.

+0

Oui, mais cela causerait des problèmes de couplage si le tableau et la méthode se trouvaient dans des classes distinctes, comme dans mon projet ici. Je vais corriger l'exemple pour une meilleure représentation. –