Герберт Шилдт - C# 4.0: полное руководство
- Название:C# 4.0: полное руководство
- Автор:
- Жанр:
- Издательство:ООО И.Д. Вильямс
- Год:2011
- Город:Москва -- Киев
- ISBN:978-5-8459-1684-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Герберт Шилдт - C# 4.0: полное руководство краткое содержание
В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.
Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию
C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Запоминающие потоки очень полезны для программирования. С их помощью можно, например, организовать сложный вывод с предварительным накоплением данных в массиве до тех пор, пока они не понадобятся. Этот прием особенно полезен для программирования в такой среде с графическим пользовательским интерфейсом, как
Windows
. Кроме того, стандартный поток может быть переадресован из массива. Это может пригодиться, например, для подачи тестовой информации в программу.
Применение классов StringReader и StringWriter
Для выполнения операций ввода-вывода с запоминанием в некоторых приложениях в качестве базовой памяти иногда лучше использовать массив типа string, чем массив типа byte. Именно для таких случаев и предусмотрены классы
StringReader
и StringWriter
. В частности, класс StringReader
наследует от класса TextReader
, а класс StringWriter
— от класса TextWriter
. Следовательно, они представляют собой потоки, имеющие доступ к методам, определенным в этих двух базовых классах, что позволяет, например, вызывать метод ReadLine()
для объекта класса StringReader
, а метод WriteLine()
— для объекта класса StringWriter
.
Ниже приведен конструктор класса
StringReader
:
StringReader(string s)
где s обозначает символьную строку, из которой производится чтение.
В классе
StringWriter
определено несколько конструкторов. Ниже представлен один из наиболее часто используемых.
StringWriter()
Этот конструктор создает записывающий поток, который помещает выводимые данные в строку. Для получения содержимого этой строки достаточно вызвать метод
ToString()
.
Ниже приведен пример, демонстрирующий применение классов
StringReader
и StringWriter
.
// Продемонстрировать применение классов StringReader и StringWriter.
using System; using
System.IO;
class StrRdrWtrDemo {
static void Main() {
StringWriter strwtr = null;
StringReader strrdr = null;
try {
// Создать объект класса StringWriter.
strwtr = new StringWriter();
// Вывести данные в записывающий поток типа StringWriter.
for (int i=0; i < 10; i++)
strwtr.WriteLine("Значение i равно: " + i);
// Создать объект класса StringReader.
strrdr = new StringReader(strwtr.ToString());
//А теперь ввести данные из считывающего
// потока типа StringReader.
string str = strrdr.ReadLine();
while(str != null) {
str = strrdr.ReadLine();
Console.WriteLine(str);
}
} catch(IOException exc) {
Console.WriteLine("Ошибка ввода-вывода" + exc.Message);
} finally {
// Освободить ресурсы считывающего и записывающего потоков,
if(strrdr != null) strrdr.Close();
if(strwtr != null) strwtr.Close();
}
}
}
Вот к каком результату приводит выполнение этого кода.
Значение i равно: 1
Значение i равно: 2
Значение i равно: 3
Значение i равно: 4
Значение i равно: 5
Значение i равно: 6
Значение i равно: 7
Значение i равно: 8
Значение i равно: 9
В данном примере сначала создается объект
strwtr
класса StringWriter
, в который выводятся данные с помощью метода WriteLine()
. Затем создается объект класса StringReader
с использованием символьной строки, содержащейся в объекте strwtr
. Эта строка получается в результате вызова метода ToString()
для объекта strwtr
. И наконец, содержимое данной строки считывается с помощью метода ReadLine()
.
Класс File
В среде .NET Framework определен класс
File
, который может оказаться полезным для работы с файлами, поскольку он содержит несколько статических методов, выполняющих типичные операции над файлами. В частности, в классе File
имеются методы для копирования и перемещения, шифрования и расшифровывания, удаления файлов, а также для получения и задания информации о файлах, включая сведения об их существовании, времени создания, последнего доступа и различные атрибуты файлов (только для чтения, скрытых и пр.). Кроме того, в классе File
имеется ряд удобных методов для чтения из файлов и записи в них, открытия файла и получения ссылки типа FileStream
на него. В классе File
содержится слишком много методов для подробного их рассмотрения, поэтому мы уделим внимание только трем из них. Сначала будет представлен метод Сору()
, а затем — методы Exists()
и GetLastAccessTime()
. На примере этих методов вы сможете получить ясное представление о том, насколько удобны методы, доступные в классе File
. И тогда вам станет ясно, что класс File
определенно заслуживает более тщательного изучения.
-------------------------------------
СОВЕТ
Ряд методов для работы с файлами определен также в классе Filelnfo. Этот класс отличается от класса File одним, очень важным преимуществом: для операций над файлами он предоставляет методы экземпляра и свойства, а не статические методы. Поэтому для выполнения нескольких операций над одним и тем же файлом лучше воспользоваться классом Filelnfo.
-------------------------------------
Копирование файлов с помощью метода Сору()
Ранее в этой главе демонстрировался пример программы, в которой файл копировался вручную путем чтения байтов из одного файла и записи в другой. И хотя задача копирования файлов не представляет особых трудностей, ее можно полностью автоматизировать с помощью метода
Сору()
, определенного в классе File
. Ниже представлены две формы его объявления.
static void Copy (string имя_исходного_файла, string имя_целевого_файла)
static void Copy (string имя_исходного_файла, string имя_целевого_файла, boolean overwrite)
Метод
Copy()
копирует файл, на который указывает имя_исходного_файла, в файл, на который указывает имя_целевого_файла. В первой форме данный метод копирует файл только в том случае, если файл, на который указывает имя_целево-го_файла, еще не существует. А во второй форме копия заменяет и перезаписывает целевой файл, если он существует и если параметр overwrite принимает логическое значение true
. Но в обоих случаям может быть сгенерировано несколько видов исключений, включая IOException
и FileNotFoundException
.
Интервал:
Закладка: