// Использовать объект га в качестве массива.

Console.WriteLine('Длина массива га: ' + га.Length); for(int i = -5; i <= 5; i++)

га[i] = i;

Console.Write('Содержимое массива га: '); for(int i = -5; i <= 5; i++)

Console.Write(ra[i] + ' ');

Console.WriteLine(' ');

// Использовать объект ra2 в качестве массива.

Console.WriteLine('Длина массива га2: ' + ra2.Length); for(int i = 1; i <= 10; i++) ra2[i] = i;

Console.Write('Содержимое массива ra2: '); for(int i = 1; i <= 10; i++)

Console.Write(ra2[i] + ' ') ;

Console.WriteLine(' ') ;

// Использовать объект гаЗ в качестве массива.

Console.WriteLine('Длина массива гаЗ: ' + гаЗ.Length); for(int i = -20; i <= -12; i++) ra3[i] = i;    >

Console.Write('Содержимое массива гаЗ: '); for (int i = -20; i <= -12; i++)

Console.Write(ra3[i] + ' ');

Console.WriteLine(' ') ;

}

}

При выполнении этого кода получается следующий результат.

Длина массива га: 11

Содержимое массива га: -5-4-3-2-1012345 Длина массива га2: 10

Содержимое массива га2: 12345678910 Длина массива гаЗ: 9

Содержимое массива гаЗ: -20 -19 -18 -17 -16 -15 -14 -13 -12

Как следует из результата выполнения приведенного выше кода, объекты типа RangeArray можно индексировать в качестве массивов, начиная с любой точки отсчета, а не только с нуля. Рассмотрим подробнее саму реализацию класса RangeArray.

В начале класса RangeArray объявляются следующие закрытые переменные экземпляра.

// Закрытые данные.

int[] а; // ссылка на базовый массив int lowerBound; // наименьший индекс •int upperBound; // наибольший индекс

Переменная а служит для обращения к базовому массиву по ссылке. Память для него распределяется конструктором класса RangeArray. Нижняя граница индексирования массива хранится в переменной lowerBound, а верхняя граница — в переменной upperBound.

Далее объявляются автоматически реализуемые свойства Length и Error.

// Автоматически реализуемое и доступное только для чтения свойство Length, public int Length { get; private set; }

// Автоматически реализуемое и доступное только для чтения свойство Error, public bool Error { get; private set; }

Обратите внимание на то, что в обоих свойства аксессор set обозначен как private. Как пояснялось выше, такое объявление автоматически реализуемого свойства, по существу, делает его доступным только для чтения.

Ниже приведен конструктор класса RangeArray.

// Построить массив по заданному размеру, public RangeArray(int low, int high) { high+ +;

if(high <= low) {

Console.WriteLine('Неверные индексы');

high = 1; // создать для надежности минимально допустимый массив

low = 0;

}

а = new int[high - low];

Length = high - low;

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату