Зубчатые массивы в C#: объявление, инициализация и доступ
Зубчатые массивы в C#
В этом уроке мы изучим зубчатые массивы C#. Научимся объявлять, инициализировать и получать доступ к элементам зубчатого массива на примерах.
В C# зубчатый массив состоит из нескольких массивов в качестве своих элементов. Однако, в отличие от многомерных массивов, каждый массив внутри зубчатого может иметь разный размер.
Перед изучением зубчатых массивов убедитесь, что знаете:
Объявление зубчатого массива
Синтаксис объявления:
dataType[ ][ ] nameOfArray = new dataType[rows][ ];
Пример:
// объявление зубчатого массива
int[ ][ ] jaggedArray = new int[2][ ];
Здесь:
int— тип данных массива[][]— обозначает зубчатый массивjaggedArray— имя массива[2][]— количество элементов (массивов) внутри зубчатого массива
Так как каждый элемент зубчатого массива — тоже массив, можно задать размер каждого внутреннего массива. Например:
// размер первого массива = 3
jaggedArray[0] = new int[3];
// размер второго массива = 2
jaggedArray[1] = new int[2];
Инициализация зубчатого массива
Существует несколько способов инициализации.
1. Через индексы
// инициализация первого массива
jaggedArray[0][0] = 1;
jaggedArray[0][1] = 3;
jaggedArray[0][2] = 5;
// инициализация второго массива
jaggedArray[1][0] = 2;
jaggedArray[1][1] = 4;
Индекс в первых скобках — индекс элемента зубчатого массива; во вторых — индекс внутри внутреннего массива.
2. Инициализация без предварительного задания размеров
// объявление строкового зубчатого массива
int[ ][ ] jaggedArray = new int[2] [ ];
// инициализация каждого массива
jaggedArray[0] = new int[] {1, 3, 5};
jaggedArray[1] = new int[] {2, 4};
3. Инициализация при объявлении
int[ ][ ] jaggedArray = { new int[ ] {10, 20, 30}, new int[ ] {11, 22}, new int[ ] {88, 99} };
Доступ к элементам зубчатого массива
Доступ по индексам:
// первый элемент второго массива
jaggedArray[1][0];
// второй элемент второго массива
jaggedArray[1][1];
// второй элемент первого массива
jaggedArray[0][1];
Пример: Зубчатый массив в C#
using System;
namespace JaggedArray {
class Program {
static void Main(string[] args) {
// создание зубчатого массива
int[ ][ ] jaggedArray = { new int[] {1, 3, 5}, new int[] {2, 4}, };
// вывод элементов
Console.WriteLine("jaggedArray[1][0]: " + jaggedArray[1][0]);
Console.WriteLine("jaggedArray[1][1]: " + jaggedArray[1][1]);
Console.WriteLine("jaggedArray[0][2]: " + jaggedArray[0][2]);
Console.ReadLine();
}
}
}
Вывод
jaggedArray[1][0]: 2 jaggedArray[1][1]: 4 jaggedArray[0][2]: 5
Внутри зубчатого массива:
jaggedArray[1][0]— первый элемент второго массиваjaggedArray[1][1]— второй элемент второго массиваjaggedArray[0][2]— третий элемент первого массива
Перебор зубчатого массива
В C# можно использовать циклы для перебора каждого элемента.
using System;
namespace JaggedArray {
class Program {
static void Main(string[] args) {
// объявление зубчатого массива
int[][] jaggedArray = new int[2][];
// установка размеров элементов
jaggedArray[0] = new int[3];
jaggedArray[1] = new int[2];
// инициализация первого массива
jaggedArray[0][0] = 1;
jaggedArray[0][1] = 3;
jaggedArray[0][2] = 5;
// инициализация второго массива
jaggedArray[1][0] = 2;
jaggedArray[1][1] = 2;
// внешний цикл
for (int i = 0; i < jaggedArray.Length; i++) {
Console.Write("Element "+ i +": ");
// внутренний цикл
for (int j = 0; j < jaggedArray[i].Length; j++) {
Console.Write(jaggedArray[i][j] + " ");
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}
Вывод
Element 0: 1 3 5 Element 1: 2 2
Использован вложенный цикл for:
1. Внешний цикл
- доступ к элементам (массивам) зубчатого массива
jaggedArray.Length— размер зубчатого массива
2. Внутренний цикл
- доступ к элементам отдельного массива внутри зубчатого
jaggedArray[i].Length— размер элементов i-го массива
Зубчатый массив с многомерными массивами
В C# элементы зубчатого массива могут быть многомерными массивами.
int[ ][ , ] jaggedArrayTwoD = new int[2][ , ] {
new int[,] { {1, 8}, {6, 7} },
new int[,] { {0, 3}, {5, 6}, {9, 10} }
};
Каждый элемент зубчатого массива — многомерный массив:
new int[,] { {1, 8}, {6, 7} }— 2D массив с 2 элементамиnew int[ , ] { {0, 3}, {5, 6}, {9, 10} }— 2D массив с 3 элементами
Пример:
using System;
namespace JaggedArray {
class Program {
static void Main(string[] args) {
// объявление и инициализация зубчатого массива с 2D массивами
int[][,] jaggedArray = new int[3][ , ] {
new int[ , ] { {1, 8}, {6, 7} },
new int[ , ] { {0, 3}, {5, 6}, {9, 10} },
new int[ , ] { {11, 23}, {100, 88}, {0, 10} }
};
Console.WriteLine(jaggedArray[0][0, 1]);
Console.WriteLine(jaggedArray[1][2, 1]);
Console.WriteLine(jaggedArray[2][1, 0]);
Console.ReadLine();
}
}
}
Вывод
8 10 100
В коде jaggedArray[0][0, 1]:
[0]— первый элемент (2D массив) зубчатого массива[0, 1]— второй элемент первого массива внутри 2D массива
Язык C
- Массивы в C#: объявление, инициализация и операции
- Как передавать массивы в функции в C++: практическое руководство
- Техники копирования массивов в Java: подробное руководство
- Массивы в C++: объявление, инициализация и работа с указателями
- Динамическое выделение массивов в C++: практическое руководство с примерами кода
- Коллекции в C#: практическое руководство с реальными примерами
- Создание массива объектов в Java: пошаговое руководство
- MATLAB: Мастерство работы с многомерными и специальными массивами
- Продвинутые методы инспекции BGA для надежной электроники
- Передовый наносенсорный массив E-Tongue для точного детектирования биомолекул в жидкостях