- •1)Классы: индексаторы, операции классов.
- •Метод Main
- •Операции класса
- •Унарные операции
- •Implicit operator тип ( параметр ) // неявное преобразование
- •Вложенные типы
- •2) Интерфейсы: синтаксис, реализация, операции is и as.
- •Сравнение объектов (интерфейс iComparable)
- •Реализация интерфейса
- •Операции is и as
- •Перебор объектов (интерфейс iEnumerable) и итераторы
- •4) Структуры. Перечисления.
- •Операции с перечислениями
- •5)Делегаты. Передача делегатов в методы.
- •Передача делегатов в методы
- •6)Паттерн «наблюдатель».
- •7) События. Использование стандартных делегатов.
- •8) Общая характеристика многопоточных приложений.
- •9) Класс Thread.
- •Основные элементы
- •Interrupt Метод Прерывает работу текущего потока
- •10) Асинхронные делегаты.
- •11) Общая характеристика процессов ввода-вывода.
- •Основные классы пространства имен System.Ю
- •Выполнять обмен с внешними устройствами можно на уровне:
- •12) Потоки байтов.
- •Элементы класса Stream
- •14) Потоки символов.
- •15) Двоичные потоки.
- •16) Консольный ввод-вывод.
- •17) Работа с каталогами и файлами.
- •Свойства класса FileSystemlnfo
- •18) Сохранение объектов (сериализация)
- •22)Атрибуты.
- •23)Пространства имен.
- •Директивы препроцессора
- •25) Абстрактные структуры данных.
- •Интерфейсы пространства имен System.Collections
- •Коллекции пространства имен System.Collections
- •Основные элементы класса ArrayList
- •Item Свойство Получить или установить значение элемента по заданному индексу
- •27) Классы-прототипы.
- •28) Обобщенные методы. Частичные типы. Обнуляемые типы.
- •29) Основные особенности Windows-приложений.
- •30) Событийно-управляемое программирование.
- •31) Шаблон Windows-приложения.
- •Основные типы Windows.Forms
- •Некоторые основные свойства класса Control
- •33) Класс Form.
- •Некоторые свойства класса Form
- •34) Диалоговые окна.
- •35) Класс Application.
- •Некоторые основные элементы класса Application
- •36) Введение в графику.
- •Основными объектами, которые при этом используются, являются объекты классов:
- •37) Утилитарные типы System.Drawing.
- •Некоторые базовые типы пространства имен System.Drawing
Перебор объектов (интерфейс iEnumerable) и итераторы
Интерфейс IEnumerable определяет всего один метод - GetEnumerator,возвращающий объект типа IEnumerator, который можно использовать для просмотра элементов объекта.
Интерфейс IEnumerator задает три элемента:
• Свойство Current, возвращающее текущий элемент объекта;
• метод MoveNext, продвигающий перечислитель на следующий элемент объекта
• метод Reset, устанавливающий перечислитель в начало просмотра
Цикл foreach использует эти методы для перебора элементов, из которых состоит объект.
Итераторы- средства, облегчающие выполнение перебора в объекте. Представляет собой блок кода,задающий последовательность перебора элементов объекта.
Блок итератора синтаксически представляет собой обычный блок и может встречаться в теле метода, операции или части get свойства, если соответствующее возвращаемое значение имеет тип IEnumerable или IEnumerator.
В теле блока итератора могут встречаться две конструкции:
• yield return формирует значение, выдаваемое на очередной итерации;
• yield break сигнализирует о завершении итерации.
Ключевое слово yield имеет специальное значение для компилятора только в этих конструкциях.
Код блока итератора выполняется не так, как обычные блоки. Компилятор формирует служебный объектперечислитель, при вызове метода MoveNext которого выполняется код блока итератора, выдающий очередное значение с помощью ключевого слова yield. Следующий вызов метода MoveNext объекта-перечислителя возобновляет выполнение блока итератора с момента, на котором он был приостановлен в предыдущий раз.
4) Структуры. Перечисления.
Структура-тип данных, аналогичный классу, но имеющий ряд важных отличий от него:
• Структура является значимым, а не ссылочным типом данных, то есть экземпляр структуры хранит значения своих элементов, а не ссылки на них, и располагается в сетке, а не в хипе
• Структура не может участвовать в иерархиях наследования, она может только реализовывать интерфейсы;
• В структуре запрещено определять конструктор по умолчанию, поскольку с определен неявно и присваивает всем ее элементам значения по умолчанию (нули соответствующего типа);
• в структуре запрещено определять деструкторы, поскольку это бессмысленно.
Синтаксис структуры:
[ атрибуты ] [ спецификаторы ] struct имя структуры [ : интерфейсы ]
тело_структуры [ ; ]
Спецификаторы структуры имеют такой же смысл, как и для класса, причем у спецификаторов доступа допускаются только public, internal и private (последний — только для вложенных структур).
Интерфейсы, реализуемые структурой, перечисляются через запятую. Тело структуры может состоять из констант, полей, методов, свойств, событий, индексаторов, операций, конструкторов и вложенных типов. Правила их описания:
• поскольку структуры не могут участвовать в иерархиях, для их элементов не могут использоваться спецификаторы protected и protected internal;
• структуры не могут быть абстрактными (abstract), к тому же по умолчанию они бесплодны (sealed);
• методы структур не могут быть абстрактными и виртуальными;
• переопределяться (то есть описываться со спецификатором override) могут только методы, унаследованные от базового класса object;
• параметр this интерпретируется как значение, поэтому его можно использовать для ссылок, но не для присваивания;
• при описании структуры нельзя задавать значения полей по умолчанию
При выводе экземпляра структуры на консоль выполняется упаковка, то есть неявное преобразование в ссылочный тип. Упаковка применяется и в других случаях, когда структурный тип используется там, где ожидается ссылочный, например, при преобразовании экземпляра структуры к типу реализуемого ею интерфейса. При обратном преобразовании — из ссылочного типа в структурный — выполняется распаковка.
При написании программ часто возникает потребность определить несколько связанных между собой именованных констант, при этом их конкретные значения могут быть не важны. Для этого удобно воспользоваться перечисляемым типом данных, все возможные значения которого задаются списком целочисленных констант.Для каждой константы задается ее символическое имя. По умолчанию константам присваиваются последовательные значения типа int, начиная с 0, но можно задать и собственные значения
Имена перечисляемых констант внутри каждого перечисления должны быть уникальными, а значения могут совпадать.
Синтаксис перечисления:
[ атрибуты ] [ спецификаторы ] enum имя_перечисления [ : базовыйтип ]
тело_перечисления [ ; ]
Допускаются только спецификаторы перечисления new, public, protected, internal и private.
Базовый тип — это тип элементов, из которых построено перечисление. По умолчанию используется тип int, но можно задать тип и явным образом, выбрав его среди целочисленных типов, а именно: byte, sbyte, short, ushort, int, uint, long и ulong.
Тело перечисления состоит из имен констант, каждой из которых может быть присвоено значение. Если значение не указано, оно вычисляется прибавлением единицы к значению предыдущей константы. Константы по умолчанию имеют спецификатор доступа public.
Перечисления часто используются как вложенные типы, идентифицируя значения из какого-либо ограниченного набора.
