
- •Вопрос 1. Общее понятие ооп
- •Вопрос 2. Классы, объекты, абстрагирование
- •Вопрос 3. Полиморфизм, инкапсуляция, наследование
- •Вопрос4. История развития и базовый синтаксис с#
- •Вопрос 5. Основные черты языка с#
- •Вопрос 6. Система типов с#
- •Вопрос 7. Литералы, переменные, константы, перечисления Литералы. Представление значений
- •Переменные элементарных типов. Объявление и инициализация
- •Константы
- •Перечисления
- •Вопрос 8. Операции и выражения
- •Приоритет операций
- •Вопрос 9. Приведение типов
- •Вопрос 10 Контроль за перевыполнением
- •Вопрос 11 Процедурные и функциональные методы в с#
- •Вопрос 11 Создание и уничтожение объектов
- •Модификатор static и объект this Кроме выше рассмотренных модификаторов доступа (public,protected…) в языке c# существует еще ряд модификаторов. Один из них – модификатор static.
- •Уничтожение объектов в управляемой памяти. Деструктор
- •Вопрос 13 Параметризованные классы и индексаторы
- •Параметризованные классы – классы, позволяющие определить тип своих аргументов при непосредственном создании объектов.
- •Вопрос 14 управляющие операторы
- •Вопрос 15 массивы
- •Вопрос 16 перегрузка операций
- •Вопрос 17 Наследование. Конструкторы базового и производного классов
- •Вопрос 18 Переопределение членов базового класса:new модификатор
- •Вопрос 19 Прекращение наследования: sealed-спецификатор
- •Вопрос 20 Абстрактные функции и абстрактные классы
- •Вопрос 21 Операции is и as
- •Вопрос 22 Ввод и вывод данных с#
- •Потоки: байтовые, символьные, двоичные
- •Консольный ввод/вывод. Функции – члены класса Console
- •Консольный вывод. Форматирование
- •Нестандартное (custom) форматирование значений
- •Консольный ввод. Преобразование значений
Консольный ввод. Преобразование значений
Следует иметь в виду, что чтение информации из входного потока класса Console связано с получением из буфера клавиатуры СИМВОЛЬНЫХ последовательностей и в большинстве случаев предполагает дальнейшие преобразования этих последовательностей к соответствующему типу значений.
Консольный ввод предполагает использование уже известных статических (!) функций – членов класса Console:
Read() – читает следующий знак из стандартного входного потока:
public static int Read();
Возвращаемое значение:
Следующий знак из входного потока или значение "–1", если знаков больше нет.
Метод не будет завершен до окончания операции чтения, например при нажатии клавиши "Ввод". При наличии данных входной поток содержит ввод пользователя и зависящую от окружения последовательность знаков перехода на новую строку.
ReadLine() – считывает следующую строку символов из стандартного входного потока:
public static string ReadLine();
Возвращаемое значение:
Следующая строка из входного потока или пустая ссылка, если знаков больше нет.
Строка определяется как последовательность символов, завершаемая парой escape-символов carriage return line feed ("\r\n") – (hexadecimal 0x000d), (hexadecimal 0x000a). При этом возвращаемая строка эти символы не включает.
В любом случае речь идет о получении символьной информации. Символьная информация достаточно просто извлекается из входного потока. Однако это не самая большая составляющая общего объема обрабатываемой информации. Как правило, содержимое входного потока приходится приводить к одному из базовых типов.
В .NET FCL реализован процесс преобразования информации в рамках Общей Системы Типов (CTS).
.NET Framework Class Library включает класс System.Convert, в котором реализовано множество функций-членов, предназначенных для выполнения ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ЗНАЧЕНИЙ ОДНОГО базового ТИПА В ЗНАЧЕНИЯ ДРУГОГО базового ТИПА. В частности, в этом классе содержится множество функций (по нескольку функций на каждый базовый тип), обеспечивающих попытку преобразования символьных строк в значения базовых типов.
Кроме того, множество классов, входящих в CTS и FCL, располагают вариантами функции Parse(), основное назначение которой – ПОПЫТКА преобразования строк символов (в частности, получаемых в результате выполнения методов консольного ввода) в значения соответствующих типов.
При обсуждении функций преобразования неслучайно употребляется слово "попытка". Не каждая строка символов может быть преобразована к определенному базовому типу. Для успешного преобразования предполагается, что символьная строка содержит символьное представление значения в некотором общепринятом формате в соответствии с соответствующей существующей в операционной системе настройкой языковых параметров, представления чисел, времени и дат. С аналогичной ситуацией мы уже сталкивались при обсуждении понятия литералов. В случае успешного преобразования функции возвращают результат преобразования в виде значения соответствующего типа.
Если же значение одного типа не может быть преобразовано к значению другого типа, преобразующая функция ВЫРАБАТЫВАЕТ ИСКЛЮЧЕНИЕ, с помощью которого среда выполнения уведомляется о неудачной попытке преобразования.
Файловый ввод/вывод
С файлами позволяет работать объект класса FileStream(файловый поток)
StreamWriter – записывает в файл
StreamReadеr – читает из файла
FileMode enumeration:
описывает, каким образом операционная система должна открывать файл.
Имя члена |
Описание |
Append |
Открывается существующий файл и выполняется поиск конца файла или же создается новый файл. FileMode.Append можно использовать только вместе с FileAccess.Write. Любая попытка чтения заканчивается неудачей и создает исключение ArgumentException |
Create |
Описывает, что операционная система должна создавать новый файл. Если файл уже существует, он будет переписан. Для этого требуется FileIOPermissionAccess.Write и FileIOPermissionAccess.Append. System.IO.FileMode.Create эквивалентно следующему запросу: если файл не существует, использовать CreateNew; в противном случае использовать Truncate |
CreateNew |
Описывает, что операционная система должна создать новый файл. Для этого требуется FileIOPermissionAccess.Write. Если файл уже существует, создается исключение IOException |
Open |
Описывает, что операционная система должна открыть существующий файл. Возможность открыть данный файл зависит от значения, задаваемого FileAccess. Если данный файл не существует, создается исключение System.IO.FileNotFoundException |
OpenOrCreate |
Указывает, что операционная система должна открыть файл, если он существует, в противном случае должен быть создан новый файл. Если файл открыт с помощью FileAccess.Read, требуется FileIOPermissionAccess.Read. Если файл имеет доступ FileAccess.ReadWrite и данный файл существует, требуется FileIOPermissionAccess.Write. Если файл имеет доступ FileAccess.ReadWrite и файл не существует, в дополнение к Read и Write требуется FileIOPermissionAccess.Append |
Truncate |
Описывает, что операционная система должна открыть существующий файл. После открытия должно быть выполнено усечение файла таким образом, чтобы его размер стал равен нулю. Для этого требуется FileIOPermissionAccess.Write. Попытка чтения из файла, открытого с помощью Truncate, вызывает исключение |
FileAccess enumerations:
Члены перечисления |
Описание |
Read |
Доступ к файлу для чтения. Данные могут быть прочитаны из файла. Для обеспечения возможностей чтения/записи может комбинироваться со значением Write |
ReadWrite |
Доступ к файлу для чтения/записи |
Write |
Доступ к файлу для записи. Данные могут быть записаны в файл. Для обеспечения возможностей чтения/записи может комбинироваться со значением Read |