- •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
17) Работа с каталогами и файлами.
В пространстве имен System.I0 есть четыре класса, предназначенные для работы с физическими файлами и структурой каталогов на диске: Directory, File, Directorylnfo и Filelnfo. С их помощью можно выполнять создание, удаление, перемещение файлов и каталогов, а также получение их свойств.
Классы Directory и File реализуют свои функции через статические методы. Directorylnfo и Filelnfo обладают схожими возможностями, но они реализуются путем создания объектов соответствующих классов. Классы Directorylnfo и Filelnfo происходят от абстрактного класса FileSystemlnfo, который снабжает их базовыми свойствами
Свойства класса FileSystemlnfo
Attributes Получить или установить атрибуты для данного объекта файловой системы. Для этого свойства используются значения перечисления FileAttributes
CreationTime Получить или установить время создания объекта файловой системы
Exists Определить, существует ли данный объект файловой системы
Extension Получить расширение файла Full Name Возвратить имя файла или каталога с указанием полного пути LastAccessTime Получить или установить время последнего обращения к объекту файловой системы
LastWriteTime Получить или установить время последнего внесения изменений в объект файловой системы
Name Возвратить имя файла.
Элементы класса Directorylnfo
Create, CreateSubDirectory Создать каталог или подкаталог по указанному пути в файловой системе
Delete Удалить каталог со всем его содержимым
GetDirectories Возвратить массив строк, представляющих все подкаталоги
GetFiles Получить файлы в текущем каталоге в виде массива объектов класса Filelnfo
MoveTo Переместить каталог и все его содержимое на новый адрес в файловой системе
Parent Возвратить родительский каталог
Некоторые значения перечисления FileAttributes
Archive Используется приложениями при выполнении резервного копирования, а в некоторых случаях — при удалении старых файлов
Compressed Файл является сжатым
Directory Объект файловой системы является каталогом
Encrypted Файл является зашифрованным
Hidden Файл является скрытым
Normal Файл находится в обычном состоянии, и для него установлены любые другие атрибуты. Этот атрибут не может использоваться с другими атрибутами
Offline Файл, расположенный на сервере, кэширован в хранилище на клиентском компьютере. Возможно, что данные этого файла уже устарели
Readonly Файл доступен только для чтения
System Файл является системным
18) Сохранение объектов (сериализация)
В С# есть возможность сохранять на внешних носителях не только данные примитивных типов, но и объекты. Сохранение объектов называется сериализацией, а восстановление сохраненных объектов — десериализацией. При сериализации объект преобразуется в линейную последовательность байтов. Это сложный процесс, поскольку объект может включать множество унаследованных полей и ссылки на вложенные объекты, которые, в свою очередь, тоже могут состоять из объектов сложной структуры.
К счастью, сериализация выполняется автоматически, достаточно просто пометить класс как сериализуемый с помощью атрибута [Serializable]. Атрибуты — это дополнительные сведения о классе, которые сохраняются в его метаданных. Те поля, которые сохранять не требуется, помечаются атрибутом [NonSerialized], например:
[Serializable]
class Demo
{
public int a = 1:
[NonSerialized] public double y:
public Monster X. Y;
}
Объекты можно сохранять в одном из двух форматов: двоичном или SOAP (в виде XML-файла). В первом случае следует подключить к программе пространство имен System.Runtime.Serialization.Formatters.Binary, во втором — пространство System.Runtime.Serialization.Formatters.Soap.
Для сохранения объекта в двоичном формате необходимо:
1. Подключить к программе пространство имен System.Runtime.Serialization. Formatters.Binary.
2. Пометить сохраняемый класс и связанные с ним классы атрибутом [Serializable].
3. Создать поток и связать его с файлом на диске или с областью оперативной памяти.
4. Создать объект класса BinaryFormatter.
5. Сохранить объекты в потоке.
6. Закрыть файл.
19) Сборки.
Сборка — файл с расширением ехе или dll, который содержит код на промежуточном языке, метаданные типов, манифест и ресурсы
Сборка, состоящая из одного файла
Манифест
Метаданные
Код на языке IL
Ресурсы (не обязательно)
Промежуточный язык (Intermediate Language, IL) не содержит инструкций, зависящих от операционной системы и типа компьютера, что обеспечивает две новные возможности:
1 выполнение приложения на любом типе компьютера, для которого существует среда выполнения CLR;
2 повторное использование кода, написанного на любом .NET-совместимом языке.
Метаданные типов — это сведения о типах, используемых в сборке. Компилятор создает метаданные автоматически. В них содержится информация о каждом типе, имеющемся в программе, и о каждом его элементе.
Манифест — это набор метаданных о самой сборке, включая информацию обо всех файлах, входящих в состав сборки, версии сборки, а также сведения обо всех внешних сборках, на которые она ссылается. Манифест создается компилятором автоматически, программист может дополнять его собственными атрибутами.
Чаще всего сборка состоит из единственного файла, однако она может включать и несколько физических файлов (модулей). Многофайловые сборки используются для ускорения загрузки приложения — это имеет смысл для сборок большого объема, работа с которыми производится удаленно. На логическом уровне сборка представляет собой совокупность взаимосвязанных типов — классов, интерфейсов, структур, перечислений, делегатов и ресурсов.
Манифест сборки содержит:
• идентификатор версии;
• список всех внутренних модулей сборки;
• список внешних сборок, необходимых для нормального выполнения сборки;
• информацию о естественном языке, используемом в сборке
• «сильное» имя— специальный вариант имени сборки, используемый для открытых сборок;
• необязательную информацию, связанную с безопасностью;
• необязательную информацию, связанную с хранением ресурсов внутри сборки
Идентификатор версии относится ко всем элементам сборки. Он позволяет избегать конфликтов имен и поддерживать одновременное существование и использование различных версий одних и тех же сборок. Идентификатор версии состоит из двух частей: информационной версии в виде текстовой строки и версии совместимости в виде четырех чисел, разделенных точками:
• основной номер версии (major version);
• дополнительный номер версии (minor version);
• номер сборки (build number);
• номер ревизии (revision number).
Информация о безопасности позволяет определить, предоставить ли клиенту доступ к запрашиваемым элементам сборки. В манифесте сборки определены ограничения системы безопасности.
Ресурсы представляют собой, например, файлы изображений, помещаемых на форму, текстовые строки, значки приложения и т. д. Хранение ресурсов внутри сборки обеспечивает их защиту и упрощает развертывание приложения. Среда Visual Studio.NET предоставляет возможности автоматического внедрения ресурсов в сборку.
20) Использование библиотек.
Для создания библиотеки следует при разработке проекта в среде Visual Studio.NET выбрать шаблон Class Library (библиотека классов).
Любая библиотека — это сервер, предоставляющий свои ресурсы клиентам. Создадим клиентское приложение с использованием библиотеки. Для того чтобы компилятор мог ее обнаружить, необходимо после создания проекта (как обычно, это — консольное приложение) подключить ссылку на библиотеку с помощью команды Project > Add Reference (Добавить ссылку). Для поиска каталога, содержащего библиотеку, следует использовать кнопку Browse.
21) Рефлексия.
Рефлексия — это получение информации о типах во время выполнения программы. Например, можно получить список всех классов и интерфейсов сборки, список элементов каждого из классов, список параметров каждого метода и т.д. Вся информация берется из метаданных сборки. Для использования рефлексии необходимы класс System.Туре и типы пространства имен System.Reflection.
В классе Туре описаны методы, которые позволяют получить информацию о типах. В пространстве имен System.Reflection описаны типы, поддерживающие Туре, а также классы, которые служат для организации позднего связывания и динамической загрузки сборок.
(IsAbstract, IsArray, IsNestedPublic, IsClass, IsNestedPrivate, IsCOMObject, IsEnum, Islnterface, IsPrimitive, IsSealed, IsValueType)- Свойства,позволяющие получить соответствующие характеристики конкретного типа в программе (например, является ли он абстрактным, является ли он массивом, классом и т. п.)
(GetConstructors, GetEvents, GetFields, Get Interfaces, GetMethods, GetMembers, GetNestedTypes, GetProperties)- Методы, возвращающие массив с набором соответствующих элементов (конструкторов, событий, полей и т. п.)
Воспользоваться этими методами можно после создания экземпляра класса Туре.
Три других способа создания объектов:
1. В базовом классе object описан метод GetType, которым можно воспользоваться для любого объекта, поскольку он наследуется. Метод возвращает объект типа Туре, например:
Monster X = new Monster();
Type t = X.GetTypе();
2. В классе Type описан статический метод GetType с одним параметром строкового типа, на место которого требуется передать имя класса (типа), например:
Type t = Type.GetType ("Monster");
3. Операция typeof возвращает объект класса Туре для типа, заданного в качестве параметра, например:
Type t = typeof (Monster );
Методы класса Туре возвращают экземпляры стандартных классов (например, Memberlnfo). Эти классы описаны в пространстве имен System.Reflection.
Assembly Содержит методы для получения информации о сборке, а также для загрузки сборки и выполнения с ней различных операций
AssemblyName Позволяет получать информацию о сборке (имя, версия, совместимость, естественный язык и т. п.) EventInfo Хранит информацию о событии
Fieldlnfo Хранит информацию о поле
Memberlnfo Абстрактный базовый класс, определяющий общие элементы для классов Eventlnfo, Fieldlnfo, Methodlnfo и Propertylnfo
Methodlnfo Хранит информацию о методе Module Позволяет обратиться к модулю в многофайловой сборке Parameterlnfo Хранит информацию о параметре
Propertylnfo Хранит информацию о свойств
