Listing 4


using namespace System;
using namespace System::IO;
using namespace System::Runtime::Serialization::Formatters::Binary;

/*1*/ [Serializable] 
ref class Employee { /* ... */};

int main() 
{
  Employee^ emp1 = gcnew Employee();
  Employee^ emp2 = gcnew Employee();
  Employee^ emp3 = emp2;
/*2a*/  Console::WriteLine("emp1 == emp2 is {0}", (emp1 == emp2));
/*2b*/  Console::WriteLine("emp2 == emp3 is {0}", (emp2 == emp3));
/*2c*/  Console::WriteLine("emp1 == emp3 is {0}", (emp1 == emp3));

  array<Object^>^ list = gcnew array<Object^>(2);
  list[0] = emp1;
  list[1] = list[0];
/*2d*/  Console::WriteLine("list[0] == list[1] is {0}",  	                                  (list[0] == list[1]));
/*2e*/  Console::WriteLine("list[0] == emp1 is {0}",  				      (list[0] == emp1));
/*2f*/  Console::WriteLine("list[1] == emp1 is {0}",  				      (list[1] == emp1));

  // Serialize data to a file.

  BinaryFormatter^ formatter = gcnew BinaryFormatter;
  Stream^ file = File::Open("Sr03.ser", FileMode::Create);

/*3a*/  formatter->Serialize(file, emp1);
/*3b*/  formatter->Serialize(file, emp2);
/*3c*/  formatter->Serialize(file, emp3);
/*3d*/  formatter->Serialize(file, list);

  file->Close();

  // Deserialize data from a file.

  file = File::Open("Sr03.ser", FileMode::Open);

/*4a*/  emp1 = static_cast<Employee^>(formatter->Deserialize(file));
/*4b*/  emp2 = static_cast<Employee^>(formatter->Deserialize(file));
/*4c*/  emp3 = static_cast<Employee^>(formatter->Deserialize(file));
/*4d*/  list = static_cast<array<Object^>^>(formatter->Deserialize(file));

  file->Close();

/*5a*/  Console::WriteLine("emp1 == emp2 is {0}", (emp1 == emp2));
/*5b*/  Console::WriteLine("emp2 == emp3 is {0}", (emp2 == emp3));
/*5c*/  Console::WriteLine("emp1 == emp3 is {0}", (emp1 == emp3));
/*5d*/  Console::WriteLine("list[0] == list[1] is {0}",  				   (list[0] == list[1]));
/*5e*/  Console::WriteLine("list[0] == emp1 is {0}",  				      (list[0] == emp1));
/*5f*/  Console::WriteLine("list[1] == emp1 is {0}",        				      (list[1] == emp1));
}