C# Crawler
Sagiv Hadaya is crawling in C#...just for fun




 

Hashtable Serialized

this is more of a complete application rather than an article.

you can see here a usage of a c# hashtable data structure, and a usage of the serialization mechanizm.

any question will be gladly answered.

 

 

using System;

using System.Collections;

using System.Runtime.Serialization.Formatters.Binary;

using System.IO;

 

namespace ConsoleApplication5

{

      [Serializable]

      struct name

      {

      public string forname;

      public string familyname;

      }

 

      [Serializable]

      struct address

      {

      public string street;

      public int number;

      }

     

      class clsDataBlock

      {

           

            public static Hashtable       NameToAddress = new Hashtable ();  

           

            [STAThread]

            static void Main(string[] args)

            {

                  clsDataBlock db=new clsDataBlock ();

                  string ans="";

           

                  while("x" != ans)

                  {

                        System.Console.WriteLine ("1 to enter new");

                        System.Console.WriteLine ("2 to search");

                        System.Console.WriteLine ("3 to save (serialize)");

                        System.Console.WriteLine ("4 to load (deserialize)");

                        System.Console.WriteLine ("5 to show data");

                        System.Console.WriteLine ("x to quit");

                        System.Console.WriteLine ("-----------------------");

 

                        ans = System.Console.ReadLine ();

                       

                        switch(ans)

                        {

                              case "1":db.AddNew();

                                    break;

                              case "2":db.Search();

                                    break;

                              case "3":db.Save();

                                    break;

                              case "4":db.Load();

                                    break;

                              case "5":db.Show();

                                    break;

                        }

                  }

            }

            public void AddNew()

            {

                  name nm;

                  address ad;

                  string ans;

                  System.Console.WriteLine ("enter first name (x to exit):");

                  ans = System.Console.ReadLine();

                  nm.forname = ans;

 

                  System.Console.WriteLine ("enter last name (x to exit):");

                  ans = System.Console.ReadLine();

                  nm.familyname = ans;

 

                  System.Console.WriteLine ("enter street name (x to exit):");

                  ans = System.Console.ReadLine();

                  ad.street = ans;

 

                  System.Console.WriteLine ("enter street number (x to exit):");

                  ans = System.Console.ReadLine();

                  ad.number = int.Parse (ans);

 

                  NameToAddress.Add(nm,ad);

            }

 

            public void Search()

            {

                  name nm2;

                             

                  string ans2;

                  System.Console.WriteLine ("enter first name:");

                  ans2 = System.Console.ReadLine ();

                  nm2.forname = ans2;

 

                  System.Console.WriteLine ("enter last name:");

                  ans2 = System.Console.ReadLine ();

                  nm2.familyname  = ans2;

                             

                  System.Console.WriteLine ("working...");

 

                  object sname = NameToAddress[nm2];

                  if (sname != null)

                  {

                        address ad2 = (address)sname;

                        System.Console.WriteLine(" address: "+ ad2.street + " " + ad2.number );

                  }

                  else

                        System.Console.WriteLine ("no name like that...");

 

            }

 

            public void Save()

            {

                  FileStream fs = new FileStream ("Store.dat",FileMode.OpenOrCreate ,FileAccess.Write );

                  try

                  {

                        Hashtable a = new Hashtable();

                        a = NameToAddress;

                        BinaryFormatter bf=new BinaryFormatter ();

                        bf.Serialize (fs,a );

                  }

                  finally

                  {

                        fs.Close ();

                  }

 

 

            }

            public void Load()

            {

                  FileStream fs = new FileStream ("Store.dat",FileMode.Open ,FileAccess.Read );

                  try

                  {

                        Hashtable a = new Hashtable();

                                   

                                   

                        BinaryFormatter bf=new BinaryFormatter ();

                        a=(Hashtable)bf.Deserialize (fs);

                        NameToAddress = a;

                  }

                  finally

                  {

                        fs.Close ();

                  }

 

 

            }

            public void Show()

            {

                  name nm3;

                  address ad3;

                  foreach (DictionaryEntry entry in NameToAddress )

                  {

                        nm3 = (name)entry.Key;

                        ad3 = (address)entry.Value;

                        Console.WriteLine ("name= {0} {1}, address= {2} {3}",

                              nm3.forname,nm3.familyname ,ad3.street ,ad3.number);

                  }

            }

      }

}


Click here to visit the Radio UserLand website.
Click to see the XML version of this web page.
Click here to send an email to the editor of this weblog.
© Copyright 2002 Sagiv Hadaya.
Last update: 9/3/2002; 2:51:55 PM.