Герберт Шилдт - 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: полное руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
}
}
Если выполнить эту программу из командной строки
Test > log
то символьная строка "Это тест." будет выведена в файл log. Аналогичным образом переадресуется ввод. Но для переадресации ввода указываемый источник входных данных должен удовлетворять требованиям программы, иначе она "зависнет".
Операторы
<
и >
, выполняющие переадресацию из командной строки, не являются составной частью С#, а предоставляются операционной системой. Поэтому если в рабочей среде поддерживается переадресация ввода-вывода, как, например, в Windows, то стандартные потоки ввода и вывода можно переадресовать, не внося никаких изменений в программу. Тем не менее существует другой способ, позволяющий осуществлять переадресацию стандартных потоков под управлением самой программы. Для этого служат приведенные ниже методы SetIn()
, SetOut()
и SetError()
, являющиеся членами класса Console
.
static void SetIn(TextReader новый_поток_ввода)
static void SetOut(TextWriter новый_поток_вывода)
static void SetError(TextWriter новый_поток_сообщений_об_ошибках)
Таким образом, для переадресации ввода вызывается метод
SetIn()
с указанием требуемого потока. С этой целью может быть использован любой поток ввода, при условии, что он является производным от класса TextReader
. А для переадресации вывода вызывается метод SetOut()
с указанием требуемого потока вывода, который должен быть также производным от класса TextReader
. Так, для переадресации вывода в файл достаточно указать объект класса FileStream
, заключенный в оболочку класса StreamWriter
. Соответствующий пример программы приведен ниже.
// Переадресовать поток Console.Out.
using System;
using System.IO;
class Redirect {
static void Main() {
StreamWriter log_out = null;
try {
log_out = new StreamWriter("logfile.txt");
// Переадресовать стандартный вывод в файл logfile.txt.
Console.SetOut(log_out);
Console.WriteLine("Это начало файла журнала регистрации.");
for(int i=0; i<10; i++) Console.WriteLine(i);
Console.WriteLine("Это конец файла журнала регистрации.");
} catch(IOException exc) {
Console.WriteLine("Ошибка ввода-вывода" + exc.Message);
} finally {
if(log_out != null) log_out.Close();
}
}
}
При выполнении этой программы на экран ничего не выводится, но файл logfile. txt будет содержать следующее.
Это начало файла журнала регистрации.
0
1
2
3
4
5
6
7
8
9
Это конец файла журнала регистрации.
Попробуйте сами поупражняться в переадресации других встроенных потоков.
Чтение и запись двоичных данных
В приведенных ранее примерах демонстрировались возможности чтения и записи байтов или символов. Но ведь имеется также возможность (и ею пользуются часто) читать и записывать другие типы данных. Например, можно создать файл, содержащий данные типа
int
, double
или short
. Для чтения и записи двоичных значений встроенных в C# типов данных служат классы потоков BinaryReader
и BinaryWriter
. Используя эти потоки, следует иметь в виду, что данные считываются и записываются во внутреннем двоичном формате, а не в удобочитаемой текстовой форме.
Класс BinaryWriter
Класс
BinaryWriter
служит оболочкой, в которую заключается байтовый поток, управляющий выводом двоичных данных. Ниже приведен наиболее часто употребляемый конструктор этого класса:
BinaryWriter(Stream output)
где output обозначает поток, в который выводятся записываемые данные. Для записи в выходной файл в качестве параметра output может быть указан объект, создаваемый средствами класса
FileStream
. Если же параметр output оказывается пустым, то генерируется исключение ArgumentNullException
. А если поток, определяемый параметром output, не был открыт для записи данных, то генерируется исключение ArgumentException
. По завершении вывода в поток типа BinaryWriter
его нужно закрыть. При этом закрывается и базовый поток.
В классе
BinaryWriter
определены методы, предназначенные для записи данных всех встроенных в C# типов. Некоторые из этих методов перечислены в табл. 14.5. Обратите внимание на то, что строковые данные типа string
записываются во внутреннем формате с указанием длины строки. Кроме того, в классе BinaryWriter
определены стандартные методы Close()
и Flush()
, действующие аналогично описанному выше.
Таблица 14.5. Наиболее часто используемые методы, определенные в классе BinaryWriter
Метод - Описание
void Write(sbyte value)- Записывает значение типа sbyte со знаком
void Write(byte value)- Записывает значение типа byte без знака
void Write(byte[] buffer)- Записывает массив значений типа byte
void Write(short value)- Записывает целочисленное значение типа short (короткое целое)
void Write(ushort value)- Записывает целочисленное значение типа ushort (короткое целое без знака)
void Write (int value)- Записывает целочисленное значение типа int
void Write(uint value)- Записывает целочисленное значение типа uint (целое без знака)
void Write(long value)- Записывает целочисленное значение типа long (длинное целое)
void Write(ulong value)- Записывает целочисленное значение типа ulong (длинное целое без знака)
void Write(float value)- Записывает значение типа float (с плавающей точкой одинарной точности)
void Write(double value)- Записывает значение типа double (с плавающей точкой двойной точности)
void Write(decimal value)- Записывает значение типа decimal (с двумя десятичными разрядами после запятой)
void Write(char ch)- Записывает символ
void Write (char[] buffer)- Записывает массив символов
void Write(string value)Записывает строковое значение типа string, представленное во внутреннем формате с указанием длины строки
Класс BinaryReader
Класс
BinaryReader
служит оболочкой, в которую заключается байтовый поток, управляющий вводом двоичных данных. Ниже приведен наиболее часто употребляемый конструктор этого класса:
Интервал:
Закладка: