Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Стандартные интерфейсы 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. Библиотеки классов реализации функциональных План: 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-приложения
|