- •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
Интерфейсы пространства имен System.Collections
ICollection Определяет общие характеристики для набора элементов
IComparer Позволяет сравнивать два объекта
IDictionary Позволяет представлять содержимое объекта в виде пар «имя—значение»
IDictionaryEnumerator Используется для нумерации содержимого объекта, поддерживающего интерфейс IDictionary
IEnumerable Возвращает интерфейс IEnumerator для указанного объекта
IEnumerator Обычно используется для поддержки оператора foreach в отношении объектов
IHashCodeProvider Возвращает хеш-код для реализации типа с применением выбранного пользователем алгоритма хеширования
IList Поддерживает методы добавления, удаления и индексирования элементов в списке объектов
Коллекции пространства имен System.Collections
ArrayList Массив, динамически изменяющий свой размер
BitArray Компактный массив для хранения битовых значений
Hashtable Хеш-таблица
Queue Очередь
SortedList Коллекция, отсортированная по ключам. Доступ к элементам — по ключу или по индексу
Stack Стек
Основным недостатком обычных массивов является то, что объем памяти, обходимый для хранения их элементов, должен быть выделен до начала раб с массивом. Класс ArrayList позволяет программисту не заботиться о выделе памяти и хранить в одном и том же массиве элементы различных типов.
По умолчанию при создании объекта типа ArrayLi st строится массив из 16 элементов типа object. Можно задать желаемое количество элементов в массиве, передав его в конструктор или установив в качестве значения свойства Capacity
Основные элементы класса ArrayList
Capacity Свойство Емкость массива
Count Свойство Фактическое количество элементов массива
Item Свойство Получить или установить значение элемента по заданному индексу
Add Метод Добавление элемента в конец массива
AddRange Метод Добавление серии элементов в конец массива
BinarySearch Метод Двоичный поиск в отсортированном массиве или его части
Clear Метод Удаление всех элементов из массива
Класс ArrayList реализован через класс Array, то есть содержит закрытое поле этого класса.
Поскольку все типы в С# являются потомками класса object, массив может содержать элементы произвольного типа. Даже если в массиве хранятся обычные целые числа, то есть элементы значимого типа, внутренний класс является массивом ссылок на экземпляры типа object, которые представляют собой упакованный тип-значение. Соответственно, при занесении в массив выполняется упаковка, а при извлечении — распаковка элемента.
Если при добавлении элемента в массив оказывается, что фактическое количество элементов массива превышает его емкость, она автоматически удваивается, то есть происходит повторное выделение памяти и переписывание туда всех существующих элементов.
Для повышения надежности программ применяется следующий прием: экземляр класса ArrayList объявляется закрытым полем класса, в котором необходимо хранить коллекцию значений определенного типа, а затем описываются место работы с этой коллекцией, делегирующие свои функции методам ArrayList.
27) Классы-прототипы.
Возможность отделить алгоритмы от типов данных предоставляют классы-прототипы— классы, имеющие в качестве параметров типы данных. Чаще всего эти классы применяются для хранения данных, то есть в качестве контейнерных классов, или коллекций.
Во вторую версию библиотеки .NET добавлены параметризованные коллекции для представления основных структур данных, применяющихся при создании программ, — стека, очереди, списка, словаря и т. д. Эти коллекции, расположенные в пространстве имен System.Collections.Generic, дублируют аналогичные коллекции пространства имен System.Collections, рассмотренные в разделе «Пространство имен System.CoIlections»
Параметром класса-прототипа является тип данных, с которым он работает. Это избавляет от перечисленных недостатков.
Создание конкретного экземпляра класса-прототипа называется инстанцированием. Класс-прототип может содержать произвольное количество параметров типа. Для каждого из них могут быть заданы ограничения (constraints), указывающие, каким требованиям должен удовлетворять аргумент, соответствующий этому па раметру, например, может быть указано, что это должен быть значимый тип или тип, который реализует некоторый интерфейс.
Помимо класса и интерфейсов в ограничениях можно задать требование, чтобы тип-аргумент имел конструктор по умолчанию без параметров, что позволяет создавать объекты этого типа в теле методов класса-прототипа.
