Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Создание одномерных индексаторов
тип_элемента this[int индекс] { // Аксессор для получения данных. get { // Возврат значения, которое определяет индекс. } // Аксессор для установки данных. set { // Установка значения, которое определяет индекс. } } где тип_элемента обозначает конкретный тип элемента индексатора. Следовательно, у каждого элемента, доступного с помощью индексатора, должен быть определенный тип_элемента. Этот тип соответствует типу элемента массива. Параметр индекс получает конкретный индекс элемента, к которому осуществляется доступ. В теле индексатора определены два аксессора (т.е. средства доступа к данным): get и set. Аксессор подобен методу, за исключением того, что в нем не объявляется тип возвращаемого значения или параметры. Аксессоры вызываются автоматически при использовании индексатора, и оба получают индекс в качестве параметра. Так, если индексатор указывается в левой части оператора присваивания, то вызывается аксессор set и устанавливается элемент, на который указывает параметр индекс. В противном случае вызывается аксессор get и возвращается значение, соответствующее параметру индекс. Кроме того, аксессор set получает неявный параметр value, содержащий значение, присваиваемое по указанному индексу. //использовать индексатор для создания отказоустойчивого массива using System; class FailSoftArray { int[] a; //ссылка на базовый массив public int Length; //открытая перемення длины массива public bool ErrFlag; //обозначает резульат последней операции //построить массив заданного размера. public FailSoftArray(int size) { a = new int[size]; Length = size; } //это индексатор для класса FailSoftArray public int this[int index] { //это аксессор get/ get { if(ok(index)) { ErrFlag=false; return a[index]; } else { ErrFlag=true; return 0; } } //это аксессор set set { if (ok(index)) { a[index] = value; ErrFlag = false; } else ErrFlag = true; } } //возвратить логическое значение true, если индекс находится в установленных границах. private bool ok(int index) { if (index >= 0 & index < Length) return true; return false; } } //прдемонстрировать применение отказоустойчивого массива class FSDemo { static void Main() { FailSoftArray fs = new FailSoftArray(5); int x; //выявить скрытые сбои. Console.WriteLine("Скрытый сбой."); for (int i = 0; i < (fs.Length * 2); i++) fs[i] = i * 10; for (int i = 0; i < (fs.Length * 2); i++) { x = fs[i]; if (x!= -1) Console.Write(x + " "); } Console.WriteLine(); //а теперь показать сбои. Console.WriteLine("\nСбой с уведомлением об ошибках."); for (int i = 0; i < (fs.Length * 2); i++) { fs[i] = i * 10; if (fs.ErrFlag) Console.WriteLine("fs[" + i + "] вне границ"); } for (int i = 0; i < (fs.Length * 2); i++) { x = fs[i]; if (!fs.ErrFlag) Console.Write(x + " "); else Console.WriteLine("fs[" + i + "] вне границ"); } } } Date: 2015-09-02; view: 413; Нарушение авторских прав |