Imports System.IO Imports System.Runtime.Serialization.Formatters.Binary <Serializable()> Class Foo Private _value As Integer Public Sub New(value As Integer) _value = value End Sub Public Property Value As Integer Set(value As Integer) _value = value End Set Get Return _value End Get End Property Public Overrides Function ToString() As String Return String.Format("{{ Value : {0} }}", _value) End Function Shared Sub Main() Dim f1 As Foo, f2 As Foo f1 = New Foo(10) f2 = f1 Console.WriteLine("初期") Console.WriteLine("f1 : {0} / f2 : {1}", f1, f2) f1.Value = 20 Console.WriteLine("f1 : {0} / f2 : {1}", f1, f2) Console.WriteLine() Dim ms As MemoryStream Dim formatter As New BinaryFormatter ms = New MemoryStream() formatter.Serialize(ms, f1) formatter.Serialize(ms, f2) ms.Seek(0L, SeekOrigin.Begin) Dim f3 As Foo = DirectCast(formatter.Deserialize(ms), Foo) Dim f4 As Foo = DirectCast(formatter.Deserialize(ms), Foo) Console.WriteLine("独立") Console.WriteLine("f3 : {0} / f4 : {1}", f3, f4) f3.Value = 30 Console.WriteLine("f3 : {0} / f4 : {1}", f3, f4) Console.WriteLine() ms = New MemoryStream() formatter.Serialize(ms, Tuple.Create(f1, f2)) ms.Seek(0L, SeekOrigin.Begin) Dim t As Tuple(Of Foo, Foo) = DirectCast(formatter.Deserialize(ms), Tuple(Of Foo, Foo)) Dim f5 As Foo = t.Item1 Dim f6 As Foo = t.Item2 Console.WriteLine("一括") Console.WriteLine("f5 : {0} / f6 : {1}", f5, f6) f5.Value = 30 Console.WriteLine("f5 : {0} / f6 : {1}", f5, f6) Console.WriteLine() Console.ReadLine() End Sub End Class
初期 f1 : { Value : 10 } / f2 : { Value : 10 } f1 : { Value : 20 } / f2 : { Value : 20 } 独立 f3 : { Value : 20 } / f4 : { Value : 20 } f3 : { Value : 30 } / f4 : { Value : 20 } 一括 f5 : { Value : 20 } / f6 : { Value : 20 } f5 : { Value : 30 } / f6 : { Value : 30 }