progs.biz  
Начало>VB.NET>Основы>Урок 55
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Б. Ивьен и др. Visual Basic .NET. Библия пользователя
Б. Ивьен и др. Visual Basic .NET. Библия пользователя
Заказать на Озоне



Яндекс-цитирования

Основы VB.NET
Урок 55. Сериализация класса

Сериализация - это, попросту говоря, запись некой информации в последовательной форме (т. е. байт за байтом). И, соотвественно, десериализация - это обратное преобразование. Сериализация и десериализация используются, например, для записи экземпляра некоторого класса в файл.

Рассмотрим это на примере.

Вот первый класс:

<Serializable()> _
Public Class MyClass0
    Public a As Integer
    Public b As Boolean
    Public c As MyClass1
End Class

Как вы видите, сделать класс сериализуемым очень просто - мы должны добавить к нему атрибут Serializable (атрибуты в VB мы пишем в квадратных скобках). И все.

Обратите внимание, что у нас в классе MyClass0 есть переменная с типом MyClass1. Это тоже наш класс. Его код, например, может быть таким:

<Serializable()> _
Public Class MyClass1
    Public a As Integer()
End Class

Обратите внимание, что этот класс обязан быть тоже сериализуемым (так как он используется в сериализуемом классе MyClass0).

А вот так можно это все использовать:

Imports System.IO
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary
Module Module1

    Sub Main()
        Dim z0 As New MyClass0
        z0.a = 22
        z0.b = False
        Dim w As New MyClass1
        w.a = New Integer() {2, -3}
        z0.c = w
        ' Сериализация.
        Dim fs As New FileStream("1.txt", FileMode.Create)
        Dim bf As New BinaryFormatter
        bf.Serialize(fs, z0)
        fs.Close()


        ' Десериализация.
        Dim z1 As New MyClass0
        fs = New FileStream("1.txt", FileMode.Open)
        z1 = Convert.ChangeType(bf.Deserialize(fs), z0.GetType())
        fs.Close()
    End Sub

End Module

Так как наш класс MyClass0 сериализуемый, то мы можем записать его в последовательной форме в, например, файл (1.txt) в нашем случае. И потом прочитать из файла.

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев