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


Полезное:

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



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