Поиск

Невыровненные массивы

Последнее, что мы рассмотрим в связи с массивами, — невыровненные массивы (jagged array). Невыровненный массив — это просто массив массивов. Вот пример определения массива, состоящего из массивов целочисленных значений:

int[][] jaggedArray;

Невыровненные массивы можно применять при разработке редактора. При этом вы можете хранить каждый объект, представляющий созданный пользователем элемент управления, в массиве. Допустим, у вас есть массив кнопок и массив полей со списком (чтобы этот пример был небольшим и легко управляемым). У вас могут быть три кнопки и три поля со списком в соответствующих массивах. Объявив невыровненный массив, можно создать для этих массивов "родительский" массив, что позволит вам при необходимости легко выполнять циклическую программную обработку элементов управления:

using System;
class Control {
virtual public void SayHiO
{
Console.WriteLine("Ba3oebiu класс для элементов управления");
} }
class Button : Control {
override public void SayHiO
{
Console.WriteLine("Кнопка");
} }
class Combo ; Control <
override public void SayHiO ?
{ . . ,
Console.WriteLine("Элемент со списком");
} }
class JaggedArrayApp
{
public static void Main() {
Control[][] controls; controls = new Control[2][];
controls[0] = new Control[3];
for (int 1=0; i < controls[0].Length; i++)
<
oontrols[0][i] = new ButtonO;
}
controls[1] = new Control[2];
for (Int i = 0; i < controls[1].Length; i++)
{
controls[1][i] = new ComboO; }
for (int i = 0; i < controls.Length;i++) {
for (int j=0;j< controls[i].Length;J++) <
Control control = controls[i][j]; control. SayHiO; } }
string str = Console.ReadLineO; } }

Как видите, я определил базовый класс (Control), два производных (Button и Combo) и объявил массив массивов, содержащих объекты Controls. Таким образом, я могу хранить в массивах значения определенных типов и благодаря полиморфизму быть уверенным, что, когда наступит время извлечь объект из массива (с помощью объектов, приведенных к базовому классу), все будет работать так, как я задумал.