Студопедия

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

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Стандартные интерфейсы IEnumerable и IEnumerator






Для циклического обращения к элементам коллекции зачастую проще (да и лучше) организовать цикл foreach, чем пользоваться непосредственно методами интерфейса IEnumerator. Тем не менее ясное представление о принципе действия подобных интерфейсов важно иметь по еще одной причине: если требуется создать класс, содержащий объекты, перечисляемые в цикле foreach, то в этом классе следует реализовать интерфейсы IEnumerator и IEnumerable. Иными словами, для того чтобы обратиться к объекту определяемого пользователем класса в цикле foreach, необходимо реализовать интерфейсы IEnumerator и IEnumerable в их обобщенной или необобщенной форме. Правда, сделать это будет нетрудно, поскольку оба интерфейса не очень велики.

IEnumerator предоставляет возможность выполнить перебор элементов коллекции, предоставлять свойство Current и MoveNext и метод Reset.

Current – получает текущий элемент в коллекции.

MoveNext – перемещает перечислитель к следующему элементу коллекции.

Reset() – устанавливает перечислитель в его начальное положение, т. е. перед первым элементом коллекции.

Пример:

Класс MyInt реализует интерфейсы IEnumerator и IEnumerable.

class MyInt: IEnumerable, IEnumerator

{

int[] ints = { 12, 13, 1, 4 };

int index = -1;

// Реализуем интерейс IEnumerable

public IEnumerator GetEnumerator() { return this; }

// Реализуем интерфейс IEnumerator

public bool MoveNext()

{

if (index == ints.Length - 1)

{

Reset(); return false;

}

index++;

return true;

}

public void Reset()

{ index = -1; }

public object Current

{

get { return ints[index]; }

}

}

class Program

{

static void Main()

{

MyInt mi = new MyInt();

foreach (int i in mi) Console.Write(i+" \t");

Console.ReadLine();

}

}

Контрольные вопросы:

1. Каким количеством классов может быть реализован интерфейс?

2. Может ли класс реализовывать множественные интерфейсы?

3. Необходима ли реализация методов интерфейса в классе, включающем этот интерфейс?

4. Какой модификатор доступа соответствует интерфейсу?

5. Допустимо ли явное указание модификатора доступа для интерфейса?


Тема 10. Объектно-ориентированное программирование Windows-приложений на основе WindowsForms

Лекция 27-28. Библиотеки классов реализации функциональных
возможностей Windows

План:

1. Формы

2. Solution Explorer

3. Class View

4. Properties Window

5. Toolbox

6. Компиляция программы

7. События в Windows-приложениях

7.1. События мыши

 

Формы

Всякий раз, когда вы работаете с какой-либо программой, вы видите на экране прямоугольное окно. В этом окне и располагается вся информация, которая вам нужна. Формы могут иметь стандартный вид, такой, например, как у программы Microsoft Word, или причудливый — как у Winamp.

Форма — это экранный объект, обеспечивающий функциональность программы.

Мы с вами приступаем к созданию Windows-приложений, поэтому первое, чему нам предстоит научиться, — создавать проекты, которые будут содержать наши собственные формы.

Запускаем Visual Studio.NET, выбираем File/New/Project — появляется диалоговое окно (Ctrl+Shift+N приводит к тому же результату), в котором выбираем Visual C# Project и Windows Application (см. рисунок 10.1).

Рисунок 10.1 – Создание нового Windows-приложения

В поле Name задаем имя проекта — FirstForm и сохраняем его в папку, определяемую полем Location. Полученную папку вы сможете впоследствии переместить на другой компьютер и продолжить работу — в ней будут находиться все создаваемые нами файлы этого проекта. На экране появилась пустая Windows-форма.

После того как мы создали новый проект, можно видеть основные части среды разработки как показано на рисунке 4.2

Рисунок 10.2 – Основные части среды разработки Windows-приложения

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.