Szukam wyciąć dwuwymiarową tablicę w C#.Dwuwymiarowy kawałek tablicy w C#
Mam podwójne [2,2] ceny i chcę odzyskać drugi rząd tej tablicy. Próbowałem cen [1], ale mam wrażenie, że może to być coś innego.
Z góry dziękuję.
Szukam wyciąć dwuwymiarową tablicę w C#.Dwuwymiarowy kawałek tablicy w C#
Mam podwójne [2,2] ceny i chcę odzyskać drugi rząd tej tablicy. Próbowałem cen [1], ale mam wrażenie, że może to być coś innego.
Z góry dziękuję.
Nie ma bezpośredni „plaster” operacja, ale można określić metodę rozszerzenia tak:
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();
Pytanie jest, jeśli masz postrzępione lub wielowymiarowe tablicę ... oto jak pobrać wartość z albo:
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: Dodano zająć część plasterek ...
Aby uzyskać tablicę int z jednej z tych tablic, musisz zapętlić i pobrać żądane wartości. Na przykład:
public IEnumerable<int> GetIntsFromArray(int[][] theArray) {
for(int i = 0; i<3; i++) {
yield return theArray[2][i]; // would return 6, 7 ,8
}
}
OP napisał”” ... chce odzyskać drugiego rzędu ... "W twoim przykładzie, myślę, że OP chce jaggedArray [2] lub int [3], który zawiera {6,7,8} – JeffH
Co robi' to 'w' tej tablicy T [,] '? –
@Hamish Grubijan: Przekształca statyczną metodę w [metodę rozszerzenia] (http://msdn.microsoft.com/en-us/library/bb383977.aspx). – dtb
Nie zgubisz tutaj indeksu 'row', ponieważ myślałem, że to powinno być 'tablica [wiersz, kolumna]'? – tsul