2009-09-10 8 views
13

Je cherche à trancher un tableau bidimensionnel en C#.Tranche de matrice bidimensionnelle en C#

J'ai double [2,2] prix et je veux récupérer la deuxième ligne de ce tableau. J'ai essayé les prix [1,], mais j'ai le sentiment que ça pourrait être autre chose.

Merci d'avance.

Répondre

14

Il n'y a pas directe opération « tranche », mais vous pouvez définir une méthode d'extension comme ceci:

public static IEnumerable<T> SliceRow<T>(this T[,] array, int row) 
{ 
    for (var i = 0; i < array.GetLength(0); i++) 
    { 
     yield return array[i, row]; 
    } 
} 

double[,] prices = ...; 

double[] secondRow = prices.SliceRow(1).ToArray(); 
+0

Que fait' this' dans 'ce T [,] array'? –

+3

@Hamish Grubijan: Il convertit la méthode statique en une [méthode d'extension] (http://msdn.microsoft.com/fr-fr/library/bb383977.aspx) – dtb

+0

Vous ne perdez pas l'index 'row' ici car je pensais qu'il devrait être 'array [ligne, colonne]'? – tsul

1

La question est de savoir si vous avez un déchiquetée ou un tableau multidimensionnel ... voici comment récupérer une valeur de soit:

int[,] rectArray = new int[3,3] 
    { 
     {0,1,2} 
     {3,4,5} 
     {6,7,8} 
    }; 

int i = rectArray[2,2]; // i will be 8 

int[][] jaggedArray = new int[3][3] 
    { 
     {0,1,2} 
     {3,4,5} 
     {6,7,8} 
    }; 

    int i = jaggedArray[2][2]; //i will be 8 

EDIT: Ajout d'aborder la partie de la tranche ...

Pour obtenir un tableau int à partir d'un de ces tableaux, vous devez faire une boucle et récupérer les valeurs que vous recherchez. Par exemple:

public IEnumerable<int> GetIntsFromArray(int[][] theArray) { 
    for(int i = 0; i<3; i++) { 
    yield return theArray[2][i]; // would return 6, 7 ,8 
    } 
    } 
+2

OP a écrit » » ... voulez récupérer la deuxième ligne ... "Dans votre exemple, je pense que OP veut jaggedArray [2] ou un int [3] qui contient {6,7,8} – JeffH

Questions connexes