Подтвердить что ты не робот

Двумерный срез массива в С#

Я хочу нарезать двухмерный массив на С#.

У меня есть двойные [2,2] цены и вы хотите получить вторую строку этого массива. Я пробовал цены [1,], но у меня есть ощущение, что это может быть что-то еще.

Спасибо заранее.

4b9b3361

Ответ 1

Нет прямой операции "среза", но вы можете определить метод расширения следующим образом:

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();

Ответ 2

Вопрос в том, что у вас есть зубчатый или многомерный массив... вот как получить значение из:

 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: добавлен адрес для части среза...

Чтобы получить массив int из одного из этих массивов, вам нужно будет зацикливать и получить значения, которые вам нужны. Например:

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