ex-21-15

来自「Programming Csharp Source Code(代码) Prog」· 代码 · 共 84 行

TXT
84
字号
// Example 21-15: Serializing and deserializing an object

namespace Programming_CSharp
{
   using System;
   using System.IO;
   using System.Runtime.Serialization;
   using System.Runtime.Serialization.Formatters.Binary;

   [Serializable]
   class SumOf
   {

      public static void Main()
      {
         Console.WriteLine("Creating first one with new...");
         SumOf app = new SumOf(1,10);

         Console.WriteLine("Creating second one with deserialize...");
         SumOf newInstance = SumOf.DeSerialize();
         newInstance.DisplaySums();
      }

      public SumOf(int start, int end)
      {
         startNumber = start;
         endNumber = end;
         ComputeSums();
         DisplaySums();
         Serialize();
      }

      private void ComputeSums()
      {
         int count = endNumber - startNumber + 1;
         theSums = new int[count];
         theSums[0] = startNumber;
         for (int i=1,j=startNumber + 1;i<count;i++,j++)
         {
            theSums[i] =  j + theSums[i-1];
                
         }
      }

      private void DisplaySums()
      {
         foreach(int i in theSums)
         {
            Console.WriteLine("{0}, ",i);
         }
      }

      private void Serialize()
      {
         Console.Write("Serializing...");
         // create a file stream to write the file
         FileStream fileStream = 
            new FileStream("DoSum.out",FileMode.Create);
         // use the CLR binary formatter
         BinaryFormatter binaryFormatter = 
            new BinaryFormatter();
         // serialize to disk
         binaryFormatter.Serialize(fileStream,this);
         Console.WriteLine("...completed");
         fileStream.Close();
      }

      public static SumOf DeSerialize()
      {
         FileStream fileStream = 
            new FileStream("DoSum.out",FileMode.Open);
         BinaryFormatter binaryFormatter = 
            new BinaryFormatter();
         return (SumOf) binaryFormatter.Deserialize(fileStream);
         fileStream.Close();
           
      }
      private int startNumber = 1;
      private int endNumber;
      private int[] theSums;
   }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?