Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пакет практичних робіт.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

Інтерфейс iEnumerable

public interface IEnumerable

{

public IEnumerator GetEnumerator(); //Возвращает интерфейс IEnumerator

}

Інтерфейс IEnumerator

public interface IEnumerator

{

bool MoveNext(); //Перехід на наступний елемент колекції

object Current{get;}; //Властивість, яка повертає значення поточного елементу колекції

void Reset(); //Перехід на початок колекції

}

Приклад

using System;

using System.Collections; //Обов'язкове включення, оскільки в Collections

//описані IEnumerable и IEnumerator

namespace Garag

{

class Car //Клас автомобіль

{

int maxSpeed; //Максимальна швидкість

string name; //Найменування

public Car(int maxSpeed, int currentSpeed, string name) //Конструктор з параметрами

{

this.maxSpeed = maxSpeed;

this.name = name;

}

public override string ToString() //Перевизначення методу ToString

{

return name+" " +maxSpeed.ToString();

}

}

//Клас - колекція машин з реалізацією інтерфейсів IEnumerable и IEnumerator

public class Garag : IEnumerator, IEnumerable

{

private Car[] carArray; //Набір об'єктів Саr

int pos = -1; // Змінна для поточної позиції елементу в масиві

public Garag() //Конструктор

{

// Створення декількох об'єктів класу Саг і додавання їх в масив

carArray = new Car[3];

carArray[0] = new Car(100, 0, "Mercedes");

carArray[1] = new Car(110, 0, "Volvo");

carArray[2] = new Car(90, 0, "Lada");

}

// Реалізація методів інтерфейсу IEnumerator

public bool MoveNext()

{

if (pos < carArray.Length - 1)

{

pos++;

return true;

}

else

return false;

}

public void Reset()

{

pos = -1;

}

public object Current

{

get

{

return carArray[pos];

}

}

// Реалізація методу інтерфейсу IEnumerab1e

public IEnumerator GetEnumerator()

{

return (IEnumerator)this; //Повертає інтерфейс IEnumerator

}

}

class Class1

{

[STAThread]

static void Main(string[] args)

{

Garag G = new Garag();

// Обращаніє до об'єктів Саr через IEnumerator

IEnumerator iEnum;

iEnum = (IEnumerator)G;

// Встановлюємо курсор на початок

iEnum.Reset();

// Переміщаємо курсор вперед на один крок

iEnum.MoveNext();

foreach (Car o in G)

{

Console.WriteLine("{0}", o.ToString());

}

// Знову встановлюємо курсор на початок

iEnum.Reset();

foreach (Car o in G)

{

Console.WriteLine("{0}", o.ToString());

}

Console.Read();

}

}

}