- •Атрибуты в среде .Net и языке c#.
- •Метаданные
- •Понятие атрибутов
- •Предопределенные и собственные атрибуты
- •Потребители атрибутов
- •Применение атрибутов
- •Сокращенное именование атрибутов
- •Создание собственных атрибутов:
- •Применение собственных атрибутов:
- •Ограничение использования атрибутов:
- •Атрибуты уровня сборки и модуля:
- •Рефлексия атрибутов:
- •Выводы:
- •Язык xml. Классы платформы .Net для работы с xml-данными.
- •Синтаксис xml
- •Работа с xml при помощи System.Xml
- •Работа с xml при помощи linq to xml
- •Выводы:
- •Потоковый ввод-вывод. Файлы. Работа с файлами и каталогами. Пространство имен System.Io
- •Классы Directory (DirectoryInfo) и File (FileInfo) Некоторые общие свойства классов DirectoryInfo и FileInfo:
- •Дополнительные возможности класса DirectoryInfo
- •Дополнительные возможности класса FileInfo
- •Дополнительные члены File
- •Потоковый ввод-вывод
- •Работа с классом FileStream
- •Работа с классами StreamWriter и StreamReader
- •Классы StringWriter и StringReader
- •Работа с классами BinaryWriter и BinaryReader
- •Выводы:
- •Сериализация. Атрибуты. Стандартные форматы сериализации. Понятие сериализации объектов
- •Роль графов объектов
- •Конфигурирование объектов для сериализации
- •Общедоступные поля, приватные поля и общедоступные свойства
- •Стандартные форматеры сериализации
- •Настройка сериализации с использованием атрибутов
- •Выводы:
- •Понятие бд и субд. Язык sql. Ado.Net как средство доступа из c# к субд. Понятие бд
- •Понятие субд
- •Обзор синтаксиса
- •Подключенный уровень
- •Автономный уровень
- •Основные свойства класса DataSet
- •Основные методы класса DataSet
- •Типы DataColumn и DataRow
- •Основные члены типа DataColumn:
- •Основные члены типа DataRow:
- •Работа с адаптерами данных:
- •Основные члены класса DbDataAdapter:
- •Параллельные вычисления. Многозадачность и многопоточность.
- •Некоторые члены класс Process:
- •Некоторые члены класса ProcessThread
- •Домены приложений
- •Некоторые члены класс AppDomain:
- •Многопоточность. Классификация состояний потока. Средства многопоточного программирования System.Threading.
- •Некоторые члены пространства имен System.Threading
- •Основные члены класс Thread
- •Состояния потока
- •Многопоточное программирование при помощи асинхронных вызовов делегатов
- •Создание вторичных потоков при помощи Thread.Start()
- •Синхронизация с помощью lock
- •Синхронизация с использованием типа System.Threading.Monitor
- •Синхронизация с использованием типа System.Threading.Interlocked
- •Синхронизация с использованием атрибута [Synchronization]
- •Использование System.Threading.Timer
- •Пул потоков clr
- •Библиотека Windows.Forms. Пространства имен. Структура приложения. Элементы управления. События. Иерархия элементов управления.
- •Основные пространства имен Windows Forms
- •Структура приложения WinForms
- •Элементы управления
- •События
- •Библиотека wpf. Отличия wpf от WindowsForms. Разметка xaml. Понятие Windows Presentation Foundation
- •Типы приложений wpf
- •Основные сборки wpf
- •Построение приложения wpf без xaml
- •Построение приложения wpf с использованием только xaml
- •Пример c# обработчика события для контрола, объявленного в xaml (связь кода и xaml):
- •Создание проекта
- •Знакомство с инструментами визуального конструктора wpf
Классы StringWriter и StringReader
Классы StringWriter и StringReader реализуют функциональность практически идентичную вышеописанным StreamWriter и StreamReader, за исключением того, что вместо файла они в качестве буфера используют строку System.String.
Еще одно отличие класса StringWriter заключается в том, что для него при помощи метода GetStringBuilder() можно получить объект StringBuilder.
Работа с классами BinaryWriter и BinaryReader
Классы BinaryWriter и BinaryReader являются прямыми наследниками System.Object. Эти типы позволяют читать и записывать дискретные типы данных в потоки в компактном двоичном формате.
В классе BinaryWriter определен многократно перегруженный метод Write() для помещения типов данных в лежащий в основе поток. В дополнение к Write(), класс BinaryWriter предоставляет дополнительные члены, позволяющие получать или устанавливать объекты унаследованных от Stream типов, а также поддерживает произвольный доступ к данным.
Основные члены BinaryWriter:
BaseStream |
Это свойство, предназначенное только для чтения, обеспечивает доступ к лежащему в основе потоку, используемому объектом BinaryWriter |
Close() |
Этот метод закрывает двоичный поток |
Flush() |
Этот метод выталкивает буфер двоичного потока |
Seek() |
Этот метод устанавливает позицию в текущем потоке |
Write() |
Этот метод пишет значение в текущий поток |
Основные члены BinaryReader
BaseStream |
Это свойство, предназначенное только для чтения, обеспечивает доступ к лежащему в основе потоку, используемому объектом BinaryReader |
Close() |
Закрывает двоичный поток |
PeekChar() |
Возвращает следующий доступный символ без перемещения текущей позиции потока |
Read() |
Читает заданный набор байт или символов и сохраняет их в переданном ему массиве |
ReadXXXX() |
В классе BinaryReader определено множество методов чтения, которые извлекают из потока объекты разных типов (ReadBoolean(), ReadByte(), Readlnt32() и т.д.) |
Пример:
Filelnfo f = new Filelnfo("BinFile.dat");
// Записать двоичные данные из потока.
using ( BinaryWriter bw = new BinaryWriter(f.OpenWrite()) )
{
// Создать некоторые данные для сохранения в файле.
double aDouble = 1234.67;
int anlnt = 34567;
string aString = "А, В, C";
// Записать данные.
bw.Write(aDouble);
bw.Write(anlnt);
bw.Write(aString);
}
// Читать двоичные данные из потока.
using ( BinaryReader br = new BinaryReader(f.OpenRead()) )
{
Console.WriteLine(br.ReadDouble());
Console.WriteLine(br.Readlnt32());
Console.WriteLine(br.ReadString());
}
Выводы:
Пространство имен System.IO предоставляет классы для работы с файловой системой и осуществления ввода-вывода.
Классы Directory/DirectoryInfo реализуют методы для работы с каталогами как объектами файловой системы, классы File/FileInfo – с файлами.
Потоки – абстракция для взаимодействия с произвольной последовательностью байт в одинаковой манере вне зависимости от источника данных.
Класс FileStream предоставляет наиболее абстрактную реализацию файлового потокового ввода/вывода, позволяя читать и записывать одиночные байты или последовательности байт.
Классы StreamWriter/StreamReader реализуют работу с фалами как с потоками текстовой информации
Классы StringReader/StringWriter аналогичны Stream… классам, но работают не с файлом, а со строкой в качестве источника/приемника данных
Классы BinaryReader/BinaryWriter позволяют работать с файлами в двоичном представлении, реализуя удобные методы для записи и чтения данных различных типов.