
- •Вопрос 1 Классы обзор элементов класса.
- •Обзор элементов класса.
- •Вопрос 2 Методы. Синтаксический блок. Ссылочные параметры ref и out
- •Объявление методов
- •Возврат из метода и возврат значения
- •Вопрос 3 Перегрузка методов. Перегрузка методов. Вызов методов с одинаковым именем и разными аргументами
- •Вопрос 4 Переменное число аргументов метода params. Переменное число аргументов метода
- •Вопрос 5 Ссылочные параметры ref и out сравнительный анализ.
- •Вопрос 6 Конструкторы. Виды конструкторов, области применения, синтаксический блок.
- •Вызов конструктора экземпляра
- •Закрытые конструкторы экземпляра
- •Статические конструкторы
- •Конструкторы структур
- •Вопрос 7 Свойства. Область применения. Синтаксический блок.
- •Вопрос 8 Наследование. Предпосылки появления. Типы наследования. Синтаксический блок.
- •Вопрос 9 Виртуальные функции virtual. Вызов базовых версий функций base.
- •Вызов базовых версий функций
- •Вопрос 10 Наследование. Динамическое связывание.
- •Вопрос 11 Абстрактные методы. Особенности применения. Синтаксический блок
- •Абстрактный метод в c#
- •Вопрос 12 Абстрактные классы. Синтаксический блок. Особенности.
- •Вопрос 13 Полиморфизм как концепция ооп.
- •Вопрос 14 Потеря и восстановление информации о типе. Операторы is и as.
- •Вопрос 15 Множественное наследование. Интерфейсы область применения. Синтаксический блок.
- •Вопрос 16 Делегаты. Область применения. Синтаксический блок.
- •Вопрос 17 Групповые делегаты. Область применения. Особенности синтаксиса.
- •Вопрос 18 События. Область применения. Синтаксический блок.
- •Вопрос 19 Исключения. Область применения синтаксический блок.
- •Вопрос 20 Потоки данных и файловый ввод-вывод. Виды файлов.
- •Вопрос 21 Класс fileinfo. Обзор элементов класса.
- •Вопрос 22 Классы StreamReader и StreamWriter. Обзор элементов класса.
- •Вопрос 23 Класс List. Особенности применения. Методы и свойства класса.
- •Вопрос 24 Класс StringBuilder. Особенности применения и методы.
- •Вопрос 25 Бинарный ввод и вывод при помощи класса FileStream.
- •Вопрос 26 Форма как базовый элемент графического интерфейса. Заголовок, первоначальное размещение, свойства BackColor, ForeColor, Font; Cursor; BackGroundImage.
- •Вопрос 27 Форма как базовый элемент графического интерфейса. Рамка для формы. Кнопки изменения размеров формы. Прозрачность.
- •Вопрос 28 Передача фокуса ввода на форме. Свойства TabStop TabIndex.
- •Вопрос 29 Текстовые поля. Элемент управления Label и TextBox. Сравнительный анализ.
- •Вопрос 30 Элемент управления MenuStrip.
- •Вопрос 33
- •Вопрос 35 Элементы управления NumericUpDown и DomainUpDown характеристика и сравнительный анализ.
- •Вопрос 36 Вложенные элементы управления(контейнеры) TabControl и GroupBox. Применение элементов управления GroupBox и Panel
- •Применение элемента управления TabControl
- •Вопрос 37 Стыковка и фиксация элементов управления. Свойства Anchor и Dock.
- •Вопрос 38 Методы формы. Show, ShowDialog, Activate, Hide, Close. Методы Show и ShowDialog
- •Метод Activate
- •Метод Hide
- •Метод Close
- •Вопрос 42 Оповещение пользователя об ошибках ввода ErrorProvider.
Вопрос 20 Потоки данных и файловый ввод-вывод. Виды файлов.
Потоки обрабатывают ввод и вывод данных программы. Входной поток можно рассматривать, как последовательность байтов, входящих в программу из устройства-источника, а выходной — как последовательность байтов, попадающих из программы на устройство-приемник.
В языке С# и библиотеке .NET, потоки данных представлены отдельными объектами из классов, находящихся в пространстве имен System.IO.
Потоки иже знакомы нам. Так, например, знакомый читателю метод Console.ReadLine по умолчанию читает данные стандартного потока (объекта одного из классов System.IO, передающего символы, набираемые на клавиатуре, в используемую программу). Аналогичным образом, метод Console.WriteLine по умолчанию записывает данные стандартного потока, при выводе символов на экран.
Классы потоков System.IO эффективно ограждают программиста от обилия низкоуровневых деталей, связанных с устройствами ПК и его операционной системой. Это не только в значительной степени облегчает выполнение операций ввода-вывода, но и предоставляет стандартизированный, не зависящий от состояния устройств, способ выполнения операций с потоками. Такие программы намного проще в поддержке — отпала необходимость их изменять, следуя в ногу за всеми изменениями технологии более низкого, аппаратного уровня.
С точки зрения технического определения, файлы — это последовательности байтов. Но любые файлы можно рассмотреть под другим углом, как текстовые или бинарные.
Текстовые файлы состоят из битов и байтов, которые, если их правильно интерпретировать, есть ни что иное, как последовательность символов. (Некоторые файлы, например, используют кодировку Unicode.) Они предназначены для прочтения пользователем, как, например, файлы, создаваемые, сохраняемые и открываемые в Notepad.
Бинарные файлы создаются и обрабатываются только компьютерными программами.
Программы, написанные на языке С#, обеспечивают доступ к бинарным файлам через бинарные потоки. По аналогии, доступ к текстовым файлам и их обработка осуществляется через символьные потоки.
Бинарные файлы можно прочесть или написать более эффективно — программные данные в таком файле сохраняются в том самом виде, в котором они представлены в памяти компьютера. Отпадает необходимость в преобразованиях, отнимающих процессорное время. Символьные потоки менее эффективны. Так, например, все числовые данные для сохранения в текстовом файле требуют предварительного преобразования.
Вопрос 21 Класс fileinfo. Обзор элементов класса.
При создании нового объекта FileInfo, необходимо связать его с основным файлом — передать конструктору строку с именем последнего. Это имя может относиться не только к уже существующему, но и к создаваемому файлу. О процессе создания файлов с помощью FileInfo мы расскажем далее.
Предположим, что файл C:\MyTestFile\myFile.txt уже существует. Следующий оператор создает объект FileInfo по имени myFileObj, который представляет собой файл myFile.txt, расположенный в каталоге C:\MyTestFile:
FileInfo myFileObj = new FileInfo(@"C:\MyTestFile\myFile.txt");
Рассмотрим некоторые члены класса FileInfo:
СоруТо копирует файл, представленный объектом Fllelnfo, в новый файл.
Delete удаляет файл, представленный объектом Fllelnfo
FullName возвращает полное (включая путь) имя файла, представленного объектом Filelnfo
Length возвращает размер (в байтах) файла, представленного объектом Filelnfo
Name возвращает краткое (без указания пути) имя файла, представленного объектом FileInfo.
Пример. Написать программу, которая при помощи описанных выше методов выводит информацию о файле и копирует один файл в другой.
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace Файлы
{
class Program
{
static void Main(string[] args)
{
try
{
FileInfo myFileObj = new FileInfo(@"D:\MyTestFile\myFile.txt");
Console.WriteLine("Имя файла " + myFileObj.Name);
Console.WriteLine("Полное имя файла " + myFileObj.FullName);
Console.WriteLine("Размер файла " + myFileObj.Length);
Console.WriteLine("Дата создания файла " + myFileObj.CreationTime);
myFileObj.CopyTo(@"D:\myTestFile\myYourFile.txt", true);
}
catch (IOException exObj)
{
Console.WriteLine(exObj);
}
Console.ReadLine();
}
}
}
Строка using System.IO; добавлена, чтобы не указывать пространство имен System.IO перед Filelnfo.
Стоит отметить, что рабочий файл часто остается надолго открытым. За этот промежуток времени другие программы могут получить к нему доступ и его изменить. Как результат, файл может быть случайно удален, переименован, его содержимое изменено. При попытке обращения к несуществующему файлу, возникнет исключение. Поэтому весьма важно умело использовать механизм обработки исключений С#.
System.IO содержит еще один класс — File, имеющий функциональность, сходную с функциональностью класса FileInfo. В отличие от FileInfo, элементы класса File объявлены как static. При использовании класса File создавать новый объект (как при FileInfo) не требуется. Например, чтобы скопировать файл C:\MyTestFiles\MyFile.txt в C:\MyTestFiles\YourFile.txt, можно воспользоваться методом Сору класса File без предварительного создания объекте:
File.Copy(@"C:\MyTestFile\myFile.txt",@"C:\myTestFile\myYourFile_.txt" );
Зачем же тогда применять FileInfo? Вызов каждого метода класса File требует дополнительных ресурсов процессора, так как проверке безопасного доступа к файлу производится многократно (даже если к одному и тому же файлу обращаются с помощью разных методов). Класс FileInfo производит только одну проверку — при создании объекта FileInfo. После ее завершения вся остальная обработка происходит без проверок безопасности.