Часть двумерной матрицы в C#

Список представляет набор, где порядок пунктов важен. Это также поддерживает методы s.a. Вид и поиск. Набор является более общей структурой данных, которая делает меньше предположений о данных и также поддерживает меньше методов для управления ими. Если Вы хотите представить пользовательскую структуру данных, необходимо, вероятно, расширить набор. Если необходимо управлять данными w/o представление структуры данных, список является, вероятно, более удобным способом пойти.

15
задан MerickOWA 9 January 2014 в 16:47
поделиться

2 ответа

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

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();
15
ответ дан 1 December 2019 в 04:18
поделиться

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

 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

РЕДАКТИРОВАТЬ: Добавлено для адресации части среза ...

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

  public IEnumerable<int> GetIntsFromArray(int[][] theArray) {
  for(int i = 0; i<3; i++) {
     yield return theArray[2][i]; // would return 6, 7 ,8  
  }
  }
1
ответ дан 1 December 2019 в 04:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: