Сериализация и десериализация в C# с примером
Сериализация и десериализация в C#
Концепция сериализации и десериализации используется всякий раз, когда данные, относящиеся к объектам, должны быть отправлены из одного приложения в другое. Сериализация используется для экспорта данных приложения в файл. Затем целевое приложение использует десериализацию для извлечения данных из приложения для дальнейшего использования.
Сериализация — это концепция, в которой объекты класса C# записываются или сериализуются в файлы. Допустим, у вас есть класс C# под названием Tutorial. И у класса есть 2 свойства идентификатора и имени учебника.
Сериализацию можно использовать для прямой записи свойств данных класса Tutorial в файл. Десериализация используется для чтения данных из файла и повторного создания объекта Tutorial.
Как сериализовать объект в C#
Давайте рассмотрим пример того, как мы можем этого добиться.
В нашем примере мы собираемся выполнить следующие шаги высокого уровня в коде
- Создайте класс Tutorial с двумя свойствами:идентификатором и именем.
- Затем мы создадим объект из класса и назначим значение «1» свойству ID и значение «.Net» свойству имени.
- Затем мы будем использовать сериализацию для сериализации указанного выше объекта в файл с именем Example.txt
- Наконец, мы будем использовать десериализацию для десериализации объекта из файла и отображения значений в консоли.
Введите приведенный ниже код в файл program.cs консольного приложения.
Шаг 1) Добавьте класс.
Первый шаг — добавьте класс, который будет использоваться для сериализации
Пояснение кода:-
- Класс, который необходимо сериализовать, должен иметь атрибут [Serializable]. Это ключевое слово в C#. Затем это ключевое слово присоединяется к классу Tutorial. Если вы не укажете этот атрибут, вы получите сообщение об ошибке при попытке сериализовать класс.
- Далее следует определение класса, который будет сериализован. Здесь мы определяем класс под названием «Учебник» и предоставляем 2 свойства:одно «Идентификатор», а другое — «Имя».
Шаг 2) Создайте объект.
На этом шаге мы сначала создадим объект класса Tutorial и сериализуем его в файл с именем Example.txt
Пояснение кода:-
- Сначала мы создаем объект класса Tutorial. Затем мы присваиваем значение «1» идентификатору и «.net» свойству имени.
- Затем мы используем класс форматирования, который используется для сериализации или преобразования объекта в двоичный формат. Данные в файле при сериализации выполняются в двоичном формате. Далее мы создаем объект файлового потока. Объект файлового потока используется для открытия файла Example.txt для записи. Ключевые слова FileMode.Create и FileMode.Write используются для особого указания на то, что файл следует открывать для записи.
- Наконец, мы используем метод Serialize для передачи двоичных данных в файл. Затем мы закрываем поток, так как операция записи завершена.
Шаг 3) Используйте десериализацию.
Наконец, чтобы убедиться, что данные присутствуют в файле, мы используем десериализацию для десериализации объекта из файла.
using System; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; namespace DemoApplication { [Serializable] class Tutorial { public int ID; public String Name; static void Main(string[] args) { Tutorial obj = new Tutorial(); obj.ID = 1; obj.Name = ".Net"; IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write); formatter.Serialize(stream, obj); stream.Close(); stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read); Tutorial objnew = (Tutorial)formatter.Deserialize(stream); Console.WriteLine(objnew.ID); Console.WriteLine(objnew.Name); Console.ReadKey(); } } }
Пояснение кода:-
- Мы создаем объект «поток», чтобы открыть файл Example.txt в режиме только для чтения.
- Затем мы используем класс форматирования, который используется для десериализации объекта, хранящегося в файле Example.txt. Возвращаемый объект устанавливается в объект objnew.
- Наконец, мы отображаем свойства объекта «objnew» в консоли, используя свойства «ID» и «имя».
Когда приведенный выше код установлен и проект запускается с помощью Visual Studio, вы получите приведенный ниже вывод.
Вывод:-
Из приведенного выше вывода видно, что значения из файла были правильно десериализованы и отображены в консоли.
Обзор
Сериализация используется для записи объектов класса в файлы.
Десериализация используется для восстановления объектов из файла.
Язык C
- Класс и объект С#
- Абстрактный класс и метод С#
- Частичный класс C# и частичный метод
- Запечатанный класс и метод С#
- Класс файла Java
- Операторы в C++ с примером:что такое, типы и программы
- Разница между структурой и классом:объяснение на примере C++
- Учебное пособие по абстрактному классу C # с примером:что такое абстракция?
- Java BufferedReader:как читать файл в Java с примером
- type() и isinstance() в Python с примерами