Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию