Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Перегрузка индексаторов
// Перегрузить индексатор массива класса FailSoftArray. using System; class FailSoftArray { int[] a; // ссылка на базовый массив public int Length; // открытая переменная длины массива public bool ErrFlag; // обозначает результат последней операции // Построить массив заданного размера. public FailSoftArray(int size) { a = new int[size]; Length = size; } // Это индексатор типа int для массива 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; } } /* Это еще один индексатор для массива FailSoftArray. Он округляет свой аргумент до ближайшего целого индекса. */ public int this[double idx] { // Это аксессор get. get { int index; // Округлить до ближайшего целого. if ((idx - (int)idx) < 0.5) index = (int)idx; else index = (int)idx + 1; if (ok(index)) { ErrFlag = false; return a[index]; } else { ErrFlag = true; return 0; } } // Это аксессор set. set { int index; // Округлить до ближайшего целого. if ((idx - (int)idx) < 0.5) index = (int)idx; else index = (int)idx + 1; 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); // Поместить ряд значений в массив fs. for (int i = 0; i < fs.Length; i++) fs[i] = i; // А теперь воспользоваться индексами // типа int и double для обращения к массиву. Console.WriteLine("fs[1]: " + fs[1]); Console.WriteLine("fs[2]: " + fs[2]); Console.WriteLine("fs[1.1]: " + fs[1.1]); Console.WriteLine("fs[1.6]: " + fs[1.6]); } } Date: 2015-09-02; view: 375; Нарушение авторских прав |