Главная страница
Навигация по странице:

  • 19.2 Использование массива структур

  • 19.3 Перечисления в языке C

  • 19.4 Вопросы для проверки

  • 20.1 Файлы в языке C

  • 20.2 Пример использования сериализацией и десериализацией в работе с файлами

  • 20.3 Вопросы для проверки

  • Структуры и файлы с#. Лекции_19,20_Структуры_файлы. Лекция 19 структуры 19. 1 Понятие структуры


    Скачать 121 Kb.
    НазваниеЛекция 19 структуры 19. 1 Понятие структуры
    АнкорСтруктуры и файлы с
    Дата24.04.2021
    Размер121 Kb.
    Формат файлаdoc
    Имя файлаЛекции_19,20_Структуры_файлы.doc
    ТипЛекция
    #198113


    Продолжение темы 5 Многомерные массивы, структуры в языке C#.
    Лекция 19 СТРУКТУРЫ
    19.1 Понятие структуры
    Многие языки программирования в качестве следующей сложной формы описания данных после массивов используют структуру, рассматривая ее как тип данных позволяющий объединять переменные разного типа. Например, в языке Паскаль переменной типа структура является запись, которая очень удачно используется при определении файлов произвольного доступа и т.д.

    В языке C# под структурой понимается форма описания данных типа класс, но с некоторыми ограничениями.

    Так же как класс, структура помимо полей данных разного типа может включать различные методы, предназначенные для работы с этими полями, и конструкторы.

    В отличие от класса структура относится к значимым типам (единственная сложная форма организации данных), не может иметь родителей и потомков, но наследует методы класса Object.

    Количество и состав переменных объединяемых в структуре ограничено только объемами памяти компьютера. Однако обычно в структуре объединяются переменные соответствующие некоторому объекту или процессу. Например, данные о человеке, характеристики товара, текущее состояние некоторого технологического процесса или динамика ставок на бирже на некоторый товар и т.д.

    Структура определяется следующим форматом:

    [атрибуты][спецификаторы] struct имя_структуры [:интерфейсы]

    { тело_структуры } где,
    атрибуты – задают дополнительную информацию о структуре;

    спецификаторы – обычно определяют условие доступа к составляющим структуры;

    интерфейсы – базовые классы (не содержащие полей), которые может использовать наша структура:

    тело структуры – определяет состав элементов структуры.

    Объявление структуры очень схоже с объявлением класса с двумя отличиями: вместо зарезервированного слова class используется зарезервированное слово struct, а вместо родительского класса указывается необязательный список интерфейсов.

    В тело структуры обычно включаются переменные и их типы, объединяемые внутри структуры по некоторому логическому признаку. Каждая переменная обычно называется полем структуры (записи). Например, при формировании записи о студенте нас могут интересовать такие его характеристики как рост, вес, размер обуви, цвет глаз и т.д. Занесем эти характеристики в структуру:

    struct stydent

    {

    public string name, cvet_gl;

    public int rost, ves, god_roj;

    public float raz_ob;

    };

    stydent styd = new stydent();

    В данном примере объявлена одна переменная типа запись (styd) и шесть переменных разного типа, соответствующих полям записи:

    stуd.name и stуd.cvet_gl – переменные строкового типа;

    stуd.rost, ctуd.ves и stуd.god_roj – переменные целого типа;

    stуd.raz_ob – одна переменная вещественного типа.

    Именно такое составное имя (с использованием имени переменной, символа точка и имени поля записи) необходимо использовать в программе при обращении к конкретным полям записи.

    Например, при присваивании им некоторых значений:

    styd.name = "Иванов";

    styd.cvet_gl = "карие";

    styd.rost = 173;

    styd.ves = 68;

    styd.raz_ob = 27.5;

    styd.god_roj = 1986;

    Двойное определение полей хотя и не очень удобно при написании кода программы, но очень наглядно с точки зрения понимания, какой записи принадлежит поле структуры.

    Рассмотрим чисто учебный пример определения одной записи типа студент, ввода некоторых значений и распечатки информации о студенте.

    Исходный код программы:

    using System;
    namespace ConsoleApplication1

    {

    class Program

    {

    struct stydent

    {

    public string name, cvet_gl;

    public int rost, ves, god_roj;

    public double raz_ob;

    };

    static void Main()

    {

    stydent styd = new stydent();

    Console.WriteLine("Имя студента {0}", styd.name);

    Console.WriteLine("глаза {0}", styd.cvet_gl);

    Console.WriteLine("рост студента {0}", styd.rost);

    Console.WriteLine("год его рождения {0}", styd.god_roj);

    Console.WriteLine("вес студента {0}", styd.ves);

    Console.WriteLine("размер обуви студента {0}", styd.raz_ob);

    Console.WriteLine();

    styd.name = "Иванов";

    styd.cvet_gl = "карие";

    styd.rost = 173;

    styd.ves = 68;

    styd.raz_ob = 27.5;

    styd.god_roj = 1986;

    Console.WriteLine("Имя студента {0}", styd.name);

    Console.WriteLine("глаза {0}", styd.cvet_gl);

    Console.WriteLine("рост студента {0}", styd.rost);

    Console.WriteLine("год его рождения {0}", styd.god_roj);

    Console.WriteLine("вес студента {0}", styd.ves);

    Console.WriteLine("размер обуви студента {0}", styd.raz_ob);

    Console.WriteLine();

    Console.WriteLine("Для продолжения нажмите клавишу Enter");

    Console.ReadLine();

    }

    }

    }

    Работа программы:

    Имя студента

    глаза

    рост студента 0

    год его рождения 0

    вес студента 0

    размер обуви студента 0
    Имя студента Иванов

    глаза карие

    рост студента 173

    год его рождения 1986

    вес студента 68

    размер обуви студента 27,5
    Для продолжения нажмите клавишу Enter

    Распечатка полей записи после ее создания показывает, что всем полям по умолчанию присваиваются «нулевые» значения (как полям объектов класса).

    Объединение данных в записи позволяет использовать их в других структурах данных типа массивы и файлы.
    19.2 Использование массива структур
    Одной из часто используемых форм представления информации в памяти компьютера является организация данных в виде массива записей. На примере задачи 19.1 рассмотрим некоторые алгоритмы обработки данных, представленных в виде массива записей, включающих массив оценок целого типа.

    Задача 19.1 Случайным образом формируется массив 20 записей студентов. Каждая запись представлена фамилией студента (шесть случайных букв, причем первая буква заглавная) и пятью случайными оценками по дисциплинам "Физика Истор. Матем. Прогр. Информ."

    Напечатать созданный массив записей. Выполнить его обработку, которая включает подсчет и печать общей суммы оценок каждого студента.

    Вывести на экран монитора студентов, имеющих наибольшую и наименьшую суммы оценок за экзамены.

    Заглавные буквы ( кириллицы ) находятся в таблице кодов под номерами 1040 – 1071, а строчные в диапазоне кода от 1072 – 1102, поэтому первая буква фамилии студента формируется из первого диапазона кода, а остальные пять букв – из второго диапазона.

    Исходный код программы:

    using System;
    namespace ConsoleApplication1

    {

    class Program

    {

    public struct stydent

    {

    public string fio;

    public int[] ocen;

    };

    public static stydent[] styd = new stydent[20];
    public static void sozd()

    {

    char c;

    string s;

    int k,j = 0;

    char[] buka = new char[6];

    Random rd = new Random();

    for (int i = 0; i < 20; i++)

    {

    styd[i].ocen = new int[6];

    j = rd.Next(32) + 1040;

    buka[0] = (char)(j);

    s = buka[0].ToString();

    for (int m = 1; m < 6; m++)

    {

    j = rd.Next(32) + 1072;

    buka[m] = (char)(j);

    s = s + buka[m].ToString();

    k = rd.Next(4) + 2;

    styd[i].ocen[m-1] = k;

    }

    styd[i].fio = s;

    }

    Console.WriteLine("Список студентов создан");

    }
    public static void printz()

    {

    Console.Write("Номер \t");

    Console.Write("ФИО \t");

    Console.Write("Физика \t");

    Console.Write("Истор. \t");

    Console.Write("Матем. \t");

    Console.Write("Прогр. \t");

    Console.Write("Информ. \t");

    Console.WriteLine();

    for (int i = 0; i < 20; i++)

    {

    Console.Write("{0}\t{1}\t", i + 1, styd[i].fio);

    for (int m = 0; m < 5; m++)

    Console.Write("{0}\t", styd[i].ocen[m]);

    Console.WriteLine();

    }

    Console.WriteLine();

    }

    public static void stat()

    {

    int k, j;

    Console.Write("ФИО \t");

    Console.WriteLine("Сумма баллов");

    for (int i = 0; i < 20; i++)

    {

    k = 0;

    for (j = 0; j < 5; j++)

    k = k + styd[i].ocen[j];

    Console.WriteLine("{0} {1}", styd[i].fio, k);

    styd[i].ocen[5] = k;

    }

    Console.WriteLine();

    }
    public static void maxmin()

    {

    int k=0, j=0;

    int maxi = -100;

    int mini = 150;

    for (int i = 0; i < 20; i++)

    {

    if (maxi < styd[i].ocen[5])

    { maxi = styd[i].ocen[5]; j = i; }

    if (mini > styd[i].ocen[5])

    { mini = styd[i].ocen[5]; k = i; }

    }

    Console.WriteLine();

    Console.WriteLine("Максимальную сумму балов {0} набрал {1}", maxi,styd[j].fio);

    Console.WriteLine("Минимальную сумму балов {0} набрал {1}", mini,styd[k].fio);

    }

    static void Main(string[] args)

    {

    sozd();

    printz();

    stat();

    maxmin();

    Console.ReadLine();

    }

    }

    }

    Работа программы:

    Список студентов создан

    Номер ФИО Физика Истор. Матем. Прогр. Информ.

    1 Члыивж 5 5 4 5 2

    2 Рыцонв 4 5 3 3 2

    3 Мзсгуэ 4 4 4 3 4

    4 Чйрчьт 5 2 2 2 3

    5 Лцыхша 3 5 4 2 5

    6 Пяксню 4 2 3 2 2

    7 Ъгцмйъ 3 3 4 4 4

    8 Ььидяш 5 5 5 3 4

    9 Шщърпм 2 4 4 5 4

    10 Жыокзо 2 3 2 5 2

    11 Ъвпцоо 5 5 3 2 3

    12 Елхфця 4 4 2 2 3

    13 Лцгышь 5 3 4 3 2

    14 Тябтзз 5 2 5 3 2

    15 Ъцъшжк 5 4 4 2 2

    16 Сцрйъж 2 5 3 3 3

    17 Ющчмщу 4 4 3 5 2

    18 Йыйиец 3 4 5 2 5

    19 Моэцыщ 2 4 4 4 5

    20 Кчжишо 2 5 2 3 4
    ФИО Сумма баллов

    Члыивж 21

    Рыцонв 17

    Мзсгуэ 19

    Чйрчьт 14

    Лцыхша 19

    Пяксню 13

    Ъгцмйъ 18

    Ььидяш 22

    Шщърпм 19

    Жыокзо 14

    Ъвпцоо 18

    Елхфця 15

    Лцгышь 17

    Тябтзз 17

    Ъцъшжк 17

    Сцрйъж 16

    Ющчмщу 18

    Йыйиец 19

    Моэцыщ 19

    Кчжишо 16
    Максимальную сумму балов 22 набрал Ььидяш

    Минимальную сумму балов 13 набрал Пяксню

    В программе для хранения суммы оценок каждого студента использован дополнительный столбец массива оценок каждого студента (каждой записи).
    19.3 Перечисления в языке C#
    При написании программ часто возникает потребность определить несколько связанных между собой именованных констант, при этом их конкретные значения могут быть не важны. Для этого удобно воспользоваться перечисляемым типом данных, все возможные значения которого задаются списком целочисленных констант, например:

    enum Радуга { Красный, Оранжевый, Желтый, Зеленый, Синий, Фиолетовый };

    В приведенном примере каждой константе по умолчанию присваиваются последовательные значения типа int, начиная с 0, но можно задать и собственные значения, например:

    enum Numer { Красный = 2, Оранжевый, Желтый, Зеленый = 10, Синий };

    Константам Оранжевый и Желтый присваиваются значения 3 и 4, константе Синий – 11. Имена перечисляемых констант внутри каждого перечисления должны быть уникальными, а значения могут совпадать.

    Преимущество перечисления перед описанием именованных констант состоит в том, что связанные константы нагляднее; кроме того, компилятор выполняет проверку типов, а интегрированная среда разработки подсказывает возможные значения констант, выводя их список.

    Формат записи перечисления:

    [ атрибуты ] [ спецификаторы ] enum имя_перечисления [ : базовый_тип ]

    тело_перечисления [ ; ]

    Спецификаторы перечисления имеют такой же смысл, как и для класса, причем допускаются только спецификаторы new, public, protected, internal и private.

    Базовый тип — это тип элементов, из которых построено перечисление. По умолчанию используется тип int, но можно задать тип и явным образом, выбрав его среди целочисленных типов (кроме char), а именно: byte, sbyte, short, ushort, int, uint, long и ulong. Необходимость в этом возникает, когда значения констант невозможно или неудобно представлять с помощью типа int.

    Тело перечисления состоит из имен констант, каждой из которых может быть присвоено значение. Если значение не указано, оно вычисляется прибавлением единицы к значению предыдущей константы. Константы по умолчанию имеют спецификатор доступа public.

    С переменными перечисляемого типа можно выполнять арифметические операции (+, -, ++, - -), логические поразрядные операции (^, &, |,

    ), сравнивать их с помощью операций отношения (<, <=, >, >=, ==, !=) и получать размер в байтах (sizeof).

    При использовании переменных перечисляемого типа в целочисленных выражениях и операциях присваивания требуется явное преобразование типа.

    Учебный пример на тему перечисления позаимствован из [2]:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;
    namespace ConsoleApplication1

    {

    struct Боец

    {

    public enum Воинское_Звание

    {

    Рядовой, Сержант, Лейтенант, Майор, Полковник, Генерал

    }

    public string Фамилия;

    public Воинское_Звание Звание;

    }

    class Program

    {

    static void Main()

    {

    Боец x;

    x.Фамилия = "Иванов";

    x.Звание = Боец.Воинское_Звание.Рядовой;

    for (int i = 1980; i < 2011; i = i + 5)

    {

    if (x.Звание <= Боец.Воинское_Звание.Генерал)

    {

    Console.WriteLine("Год: {0} {1} {2}", i, x.Звание, x.Фамилия);

    x.Звание++;

    }

    }

    Console.WriteLine("Для продолжения нажмите клавишу Enter");

    Console.ReadLine();

    }

    }

    }
    Результат работы программы:

    Год: 1980 Рядовой Иванов

    Год: 1985 Сержант Иванов

    Год: 1990 Лейтенант Иванов

    Год: 1995 Майор Иванов

    Год: 2000 Полковник Иванов

    Год: 2005 Генерал Иванов

    Для продолжения нажмите клавишу Enter
    19.4 Вопросы для проверки
    19.4.1 Какое служебное слово используется при объявлении перечислений?

    1. struct;

    2. array;

    3. repear;

    4. enum;

    5. default;


    19.4.2 Какое объединение данных называется структурой?

    1. Объединение только строковых данных;

    2. Объединение данных только вещественного типа;

    3. Объединение данных только целого типа;

    4. Объединение данных только одного типа;

    5. Объединение данных разного типа;


    19.4.3 Как обычно называются переменные типа struct?

    19.4.4 Как называются переменные внутри записи?

    19.4.5 Что можно объединять в перечисляемом типе?

    Продолжение темы 5 Многомерные массивы, структуры в языке C#.
    Лекция 20 ФАЙЛЫ
    20.1 Файлы в языке C#
    В любом языке программирования существуют средства для работы с файлами. Многие программы начинают свою работу считыванием данных из файлов и заканчивают свою работу записью результатов в файл. Работа с файлами является одной из важнейших задач любого языка программирования.

    В языке C# существует несколько классов, предназначенных для работы с файлами.

    Определенная группа классов (они находятся в пространстве имен System.IO.) работает с файлами как с единицей данных. В их задачу входит работа с каталогами (папками файлов), перемещение файлов, их переименование, копирование, работа с атрибутами файлов и самой таблицей представления файлов (FAT). Условно эту группу классов можно назвать классы обработки файлов.

    В системе Windows (и языке C#), для передачи данных между различными устройствами (оперативной памятью, монитором, дисковой памятью, сетью) используется концепция потоков данных (stream). Существуют специальные классы позволяющие работать с файлами, представленными двоичными, символьными или строковыми потоками данными. Эти классы также определены в пространстве имен System.IO.

    Для работы с данными, представленными в виде структур, классов в языке C# имеется специальный набор классов, объединяемый понятием сериализация. При этом под сериализацией понимается процесс преобразования объектов, записей в последовательность байтов (информация, записываемая в файл должна представляться последовательностью байтов). Обратный процесс – восстановление из последовательности байтов объектов, записей называется десериализацией.

    Иногда под сериализацией понимается процесс сохранения текущего состояния объекта в памяти или на носителе информации (процесс записи данных), а обратный процесс — чтения данных с носителя информации является десериализацией.

    Классы, управляющие процессами сериализацией и десериализацией, находятся в пространстве имен System.Runtime.Serialization.
    20.2 Пример использования сериализацией и десериализацией в работе с файлами
    Рассмотрим использование процессов сериализацией и десериализацией на примере учебной задачи о студентах.

    Задача 20.1 В режиме диалога создать массив не более 20 студентов. Каждая запись представлена фамилией студента, названием группы, баллами, набранными студентом на экзамене и его возрастом. Предусмотреть просмотр массива записей на экране монитора, использование процесса сериализацией массива записей в файле, процесса десериализацией массива записей из файла и повторный просмотр файла. В программе использовать меню.

    В соответствии с условием задачи создадим структуру, содержащую 4 поля данных – имя студента, название группы, баллы за экзамен и возраст студента.

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.IO;

    using System.Runtime.Serialization.Formatters.Binary;
    namespace ConsoleApplication1

    {

    [Serializable]
    struct Stydent

    {

    public String Name; // Имя студента

    public String Grup; //Название группы

    public int Ball; // Баллы за экзамен

    public int Let; // Возраст

    }

    class Program

    {

    public static Stydent[] Styds = new Stydent[20];

    public static int kol = 0;
    public static void sozd()

    {

    int b;

    string buf;

    Console.WriteLine("Количество студентов в групе <= 20 !!");

    buf = Console.ReadLine();

    kol = Convert.ToInt32(buf);

    for (int i = 0; i < kol; i++)

    {

    Console.WriteLine("Введите имя {0} студента", i + 1);

    buf = Console.ReadLine();

    Styds[i].Name = buf;

    Console.WriteLine("Введите название группы {0} студента",i+1);

    buf = Console.ReadLine();

    Styds[i].Grup = buf;

    Console.WriteLine("Введите баллы за экзамен {0} студента",i+1);

    buf = Console.ReadLine();

    b = Convert.ToInt32(buf);

    Styds[i].Ball = b;

    Console.WriteLine("Введите возраст {0} студента", i + 1);

    buf = Console.ReadLine();

    b = Convert.ToInt32(buf);

    Styds[i].Let = b;

    }

    }

    public static void zapf()

    {

    // Создаем поток для сериализации:

    FileStream StreamOut = new FileStream("Sytds.dat",

    FileMode.Create, FileAccess.Write);

    // Используем двоичный формат:

    BinaryFormatter fmt = new BinaryFormatter();

    fmt.Serialize(StreamOut, Styds); // Сериализуем объекты

    StreamOut.Close(); // Закрываем поток

    }

    public static void printm()

    {

    Console.WriteLine("{0,20}, {1, 20}, {2, 10}, {3, 10}",

    "ФИО", "Группа", "Баллы", "возраст");

    foreach(Stydent T in Styds)

    {

    if (T.Ball>0)

    Console.WriteLine("{0,20}, {1, 20}, {2, 10}, {3, 10}",

    T.Name, T.Grup, T.Ball, T.Let);

    }

    }

    public static void vvod()

    {

    int i = 0;

    // Создаем поток для десериализации:

    FileStream StreamIn = new FileStream("Sytds.dat",

    FileMode.Open, FileAccess.Read);

    // Используем двоичный формат:

    BinaryFormatter fmt = new BinaryFormatter();

    Styds = (Stydent[])fmt.Deserialize(StreamIn);//Десериализуем

    kol=0;

    while (Styds[i].Ball > 0) { kol++; i++; }

    StreamIn.Close(); // Закрываем поток

    }

    public static void Main()

    {

    int k = 0;

    string buf;

    while (k < 6)

    {

    Console.WriteLine("1 - Создать массив студентов");

    Console.WriteLine("2 - Записать массив студентов в файл");

    Console.WriteLine("3 - Напечатать массив студентов");

    Console.WriteLine("4 - Считать массив студентов из файла");

    Console.WriteLine("5 - Напечатать массив студентов");

    Console.WriteLine("6 - Выход из программы");

    Console.WriteLine("Введите пункт меню программы");

    buf = Console.ReadLine();

    k = Convert.ToInt32(buf);

    switch (k)

    {

    case 1: sozd(); break;

    case 2: zapf(); break;

    case 3: printm(); break;

    case 4: vvod(); break;

    case 5: printm(); break;

    default: break;

    }

    }

    }

    }

    }

    Работа программы:

    1 - Создать массив студентов

    2 - Записать массив студентов в файл

    3 - Напечатать массив студентов

    4 - Считать массив студентов из файла

    5 - Напечатать массив студентов

    6 - Выход из программы

    Введите пункт меню программы

    1

    Количество студентов в групе <= 20 !!

    4

    Введите имя 1 студента

    Бедаш Дмитрий

    Введите название группы 1 студента

    09-ВТ-1

    Введите баллы за экзамен 1 студента

    90

    Введите возраст 1 студента

    18

    Введите имя 2 студента

    Жумашев Ержегит

    Введите название группы 2 студента

    09-ВТ-1

    Введите баллы за экзамен 2 студента

    85

    Введите возраст 2 студента

    19

    Введите имя 3 студента

    Аскарова Дина

    Введите название группы 3 студента

    09-ИС-1

    Введите баллы за экзамен 3 студента

    89

    Введите возраст 3 студента

    17

    Введите имя 4 студента

    Хомич Антонина

    Введите название группы 4 студента

    09-ИС-1

    Введите баллы за экзамен 4 студента

    90

    Введите возраст 4 студента

    18

    1 - Создать массив студентов

    2 - Записать массив студентов в файл

    3 - Напечатать массив студентов

    4 - Считать массив студентов из файла

    5 - Напечатать массив студентов

    6 - Выход из программы

    Введите пункт меню программы

    2

    1 - Создать массив студентов

    2 - Записать массив студентов в файл

    3 - Напечатать массив студентов

    4 - Считать массив студентов из файла

    5 - Напечатать массив студентов

    6 - Выход из программы

    Введите пункт меню программы

    3

    ФИО, Группа, Баллы, возраст

    Бедаш Дмитрий, 09-ВТ-1, 90, 18

    Жумашев Ержегит, 09-ВТ-1, 85, 19

    Аскарова Дина, 09-ИС-1, 89, 17

    Хомич Антонина, 09-ИС-1, 90, 18

    1 - Создать массив студентов

    2 - Записать массив студентов в файл

    3 - Напечатать массив студентов

    4 - Считать массив студентов из файла

    5 - Напечатать массив студентов

    6 - Выход из программы

    Введите пункт меню программы

    6

    После повторного запуска программы:

    1 - Создать массив студентов

    2 - Записать массив студентов в файл

    3 - Напечатать массив студентов

    4 - Считать массив студентов из файла

    5 - Напечатать массив студентов

    6 - Выход из программы

    Введите пункт меню программы

    4

    1 - Создать массив студентов

    2 - Записать массив студентов в файл

    3 - Напечатать массив студентов

    4 - Считать массив студентов из файла

    5 - Напечатать массив студентов

    6 - Выход из программы

    Введите пункт меню программы

    5

    ФИО, Группа, Баллы, возраст

    Бедаш Дмитрий, 09-ВТ-1, 90, 18

    Жумашев Ержегит, 09-ВТ-1, 85, 19

    Аскарова Дина, 09-ИС-1, 89, 17

    Хомич Антонина, 09-ИС-1, 90, 18

    1 - Создать массив студентов

    2 - Записать массив студентов в файл

    3 - Напечатать массив студентов

    4 - Считать массив студентов из файла

    5 - Напечатать массив студентов

    6 - Выход из программы

    Введите пункт меню программы
    В программе использованы 4 метода в соответствии с условием задачи (метод печати массива студентов использован в меню дважды).
    20.3 Вопросы для проверки
    20.3.1 Какой метод используется для записи данных в обычный текстовый файл языка C#?

    1. WriteLineOut

    2. WriteLine

    3. ReadLine

    4. ReadLineIn

    5. StreamFile


    20.3.2 Какое пространство имен предназначено для работы с файлами объектов в языке C#?

    1. iostream.io

    2. System.IO

    3. fstream.IO

    4. System.Runtime.Serialization

    5. Windows.Io


    20.3.3 Ваше понятие файла.

    20.3.4 Что понимается под сериализацией при работе со структурами, классами в языке C#?

    20.3.5 Что понимается под десериализацией при работе со структурами, классами в языке C#?


    написать администратору сайта