Непосредственное создание типов StreamWriter/StreamReader
Непосредственное создание типов StreamWriter/StreamReader
Одной из смущающих особенностей работы с типами из System.IO является то, что часто одних и тех же результатов можно достичь в рамках множества подходов. Например, вы видели, что можно получить StreamWriter из File или из FileInfo, используя метод CreateText(). На самом деле есть еще одна возможность получения StreamWriters и StreamReaders – это непосредственное их создание. Например, наше приложение можно было бы переписать в следующем виде.
static void Main(string[] args) {
Console.WriteLine("*** Забавы с StreamWriter/StreamReader *** ");
// Get a StreamWriter and write string data.
StreamWriter writer = new StreamWriter("reminders.txt");
…
// Now read data from file.
StreamReader sr = new StreamReader("reminders.txt");
…
}
Видеть так много идентичных, на первый взгляд, подходов к реализации ввода-вывода, может быть, немного странно, но имейте в виду, что конечным результатом здесь оказывается гибкость. Так или иначе, вы смогли увидеть, как можно извлекать символьные данные из файлов и помещать их в файлы, используя типы StreamWriter и StreamReader, и теперь мы с вами можем рассмотреть роль классов StringWriter и StringReader.
Исходный код. Проект StreamWriterReaderApp размещен в подкаталоге, соответствующем главе 16.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Преобразование типов
Преобразование типов С++ представляет несколько синтаксических конструкций по приведению одного типа к другому. Заключение нужного типа результата в скобки и размещение его перед преобразуемым значением — это традиционный способ, унаследованный от С:const double Pi =
R.14.3 Эквивалентность типов
R.14.3 Эквивалентность типов Две конструкции шаблонное-имя-класса обозначают один и тот же класс, если в них совпадают имена шаблонов типа и значения указанных параметров. Например, в следующих описаниях x и y одного типа, который отличен от типа z:template‹class E, int size› class
Члены типов
Члены типов Теперь после рассмотрения всех типов, имеющих формальное определение в CTS, вы должны осознать, что большинство типов может иметь любое число членов. Формально член типа - это любой элемент множества {конструктор, деструктор (finalizer), статический конструктор,
Доступность типов
Доступность типов Типы (классы, интерфейсы, структуры, перечни и делегаты) также могут использовать модификаторы доступности, но только public или internal. Когда вы создаете общедоступный тип (public), то гарантируете, что он будет доступным для других типов как в текущем
Распознавание типов
Распознавание типов Статический метод TheMachine.FireThisPerson() строился так, чтобы он мог принимать любой тип, производный от Employee, но возникает один вопрос: как метод "узнает", какой именно производный тип передается методу. Кроме того, если поступивший параметр имеет тип Employee, то
Создание типов, предусматривающих освобождение ресурсов и финализацию
Создание типов, предусматривающих освобождение ресурсов и финализацию К этому моменту мы с вами обсудили два различных подхода в построении классов, способных освобождать свои внутренние неуправляемые ресурсы. С одной стороны, можно переопределить System.Object.Finalize(), тогда
Создание перечислимых типов (Enumerable и IEnumerator)
Создание перечислимых типов (Enumerable и IEnumerator) Чтобы перейти к иллюстрации процесса реализации существующих интерфейсов .NET, нужно выяснить роль IEnumerable и IEnumerator. Предположим, что у нас есть класс Garage (гараж), содержащий некоторый набор типов Car (см. главу б), хранимых в виде
Метаданные типов
Метаданные типов Возможность полного описания типов (классов, интерфейсов, структур, перечней и делегатов) с помощью метаданных является главной особенностью платформы .NET. Многие .NET-технологии, такие как сериализация объектов, удаленное взаимодействие .NET и Web-сервисы XML,
Отображение типов в .NET
Отображение типов в .NET В терминах .NET отображение обозначает процесс выяснения параметров типа средой выполнения. Используя сервисы отображения, ту же информацию метаданных, которая отображается с помощью ildasm.exe, вы можете получить программно. Например с помощью
Работа с StreamWriter и StreamReader
Работа с StreamWriter и StreamReader Классы StreamWriter и StreamReader оказываются полезны тогда, когда приходится читать или записывать символьные данные (например, строки). Оба эти типа по умолчанию работают с символами Unicode, однако вы можете изменить эти установки, предоставив ссылку на
2.3.9 Эквивалентность типов
2.3.9 Эквивалентность типов Два структурных типа являются различными даже когда они имеют одни и те же члены. Например:struct s1 (* int a; *); struct s2 (* int a; *);есть два разных типа, поэтомуs1 x; s2 y = x; // ошибка: несоответствие типовСтруктурные типы отличны также от основных типов, поэтомуs1 x;
Обзор типов
Обзор типов Типы в PascalABC.NET подразделяются на простые, строковые, структурированные, типы указателей, процедурные типы и классы.К простым относятся целые и вещественные типы, логический, символьный, перечислимый и диапазонный тип.К структурированным типам относятся
Список типов .NET
Список типов .NET * Целые типы Вещественные типы Логический тип Символьный тип Перечислимый и диапазонный типы Статические массивы Динамические массивы Записи Множества Файлы Указатели Процедурный тип Последовательности
Специфицирование типов
Специфицирование типов В разделе ТИПЫ указываются специфицируемые типы. В общем случае, может оказаться удобным определять одновременно несколько АТД, хотя в нашем примере имеется лишь один тип STACK(СТЕК). Между прочим, что такое тип? Ответ на этот вопрос объединит все