System.Array and the Collection Classes:ICloneable 1


   
 

using System;
class ContainedValue
{
    public ContainedValue(int count)
    {
        this.count = count;
    }
    public int count;
}
class MyObject: ICloneable
{
    public MyObject(int count)
    {
        this.contained = new ContainedValue(count);
    }
    public object Clone()
    {
        Console.WriteLine("Clone");
        return(new MyObject(this.contained.count));
    }
    public ContainedValue contained;
}
public class SystemArrayandtheCollectionClassesICloneable
{
    public static void Main()
    {
        MyObject    my = new MyObject(33);
        MyObject    myClone = (MyObject) my.Clone();
        Console.WriteLine(    "Values: {0} {1}",
        my.contained.count,
        myClone.contained.count);
        myClone.contained.count = 15;
        Console.WriteLine(    "Values: {0} {1}",
        my.contained.count,
        myClone.contained.count);
    }
}

           
         
     


Demonstrate ICloneable


   
 
/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/

// Demonstrate ICloneable. 
 
using System;  
 
class X { 
  public int a; 
 
  public X(int x) { a = x; } 
} 
 
class Test : ICloneable { 
  public X o; 
  public int b; 
 
  public Test(int x, int y) { 
    o = new X(x); 
    b = y; 
  } 
 
  public void show(string name) { 
    Console.Write(name + " values are "); 
    Console.WriteLine("o.a: {0}, b: {1}", o.a, b); 
  } 
 
  // Make a deep copy of the invoking object. 
  public object Clone() { 
    Test temp = new Test(o.a, b); 
    return temp; 
  } 
     
} 
  
public class CloneDemo {     
  public static void Main() {     
    Test ob1 = new Test(10, 20); 
 
    ob1.show("ob1"); 
 
    Console.WriteLine("Make ob2 a clone of ob1."); 
    Test ob2 = (Test) ob1.Clone(); 
 
    ob2.show("ob2"); 
 
    Console.WriteLine("Changing ob1.o.a to 99 and ob1.b to 88."); 
    ob1.o.a = 99; 
    ob1.b = 88; 
 
    ob1.show("ob1"); 
    ob2.show("ob2"); 
  } 
}


           
         
     


Copy a class


   
 
/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Copy a class. 
 
using System; 
 
// Define a structure. 
class MyClass { 
  public int x; 
} 
 
// Now show a class object assignment. 
public class ClassAssignment { 
  public static void Main() { 
    MyClass a = new MyClass(); 
    MyClass b = new MyClass(); 
 
    a.x = 10; 
    b.x = 20; 
 
    Console.WriteLine("a.x {0}, b.x {1}", a.x, b.x); 
 
    a = b; 
    b.x = 30; 
 
    Console.WriteLine("a.x {0}, b.x {1}", a.x, b.x); 
  } 
}


           
         
     


declare a class Address containing the data members to describe a US address along with the member functions

   
 


using System;

class MainClass {
    public static void Main(string[] args) {
        Address addr = new Address();
        addr.SetStreet(123, "My Street");
        addr.SetCity("A", "X", 123456);

        Console.WriteLine(addr.GetStreetString());
        Console.WriteLine(addr.GetCityString());

        addr.Output();

    }
}

class Address {
    public int nAddressNumberPart;
    public string sAddressNamePart;

    public string sCity;
    public string sState;
    public int nPostalCode;

    public void SetStreet(int nNumber, string sName) {
        nAddressNumberPart = nNumber;
        sAddressNamePart = sName;
    }

    public string GetStreetString() {
        return nAddressNumberPart + " " + sAddressNamePart;

    }
    public void SetCity(string sCityIn, string sStateIn, int nPostalCodeIn) {
        sCity = sCityIn;
        sState = sStateIn;
        nPostalCode = nPostalCodeIn;
    }
    public string GetCityString() {
        return sCity + ", " + sState + " " + nPostalCode;
    }
    public string GetAddressString() {
        return GetStreetString() + "
" + GetCityString();
    }

    public void Output() {
        Console.WriteLine(GetAddressString());
    }
}

    


Static class variable


   

/*
Learning C# 
by Jesse Liberty

Publisher: O'Reilly 
ISBN: 0596003765
*/
 using System;

 namespace Test_Console_App_3
 {

     // declare a Cat class
     // stripped down
     class Cat
     {
         // a private static member to keep
         // track of how many Cat objects have
         // been created
         private static int instances = 0;
         private int weight;
         private String name;

         // cat constructor
         // increments the count of Cats
         public Cat(String name, int weight)
         {
             instances++;
             this.name = name;
             this.weight = weight;
         }

         // Static method to retrieve
         // the current number of Cats
         public static void HowManyCats()
         {
             Console.WriteLine("{0} cats adopted",
                 instances);
         }
         public void TellWeight()
         {
             Console.WriteLine("{0} is {1} pounds",
                 name, weight);
         }
     }

    public class StaticInClassTester
    {
       public void Run()
       {
           Cat.HowManyCats();
           Cat frisky = new Cat("Frisky", 5);
           frisky.TellWeight();
           Cat.HowManyCats();
           Cat whiskers = new Cat("Whisky", 7);
           whiskers.TellWeight();
           Cat.HowManyCats();
       }

       static void Main()
       {
          StaticInClassTester t = new StaticInClassTester();
          t.Run();
       }
    }
 }

           
          


Class variables with default value


   

/*
Learning C# 
by Jesse Liberty

Publisher: O'Reilly 
ISBN: 0596003765
*/
 using System;

 public class MyTimeWithDefaultValue
 {
     // private member variables
     int year;
     int month;
     int date;
     int hour;
     int minute;
     int second = 30;

     // public method
     public void DisplayCurrentMyTimeWithDefaultValue()
     {
         System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}",
             month, date, year, hour, minute, second);
     }

     // constructor
     public MyTimeWithDefaultValue(int theYear, int theMonth, int theDate,
         int theHour, int theMinute)
     {
         year = theYear;
         month = theMonth;
         date = theDate;
         hour = theHour;
         minute = theMinute;
     }
 }

 public class Tester
 {
     static void Main()
     {
         MyTimeWithDefaultValue timeObject = new MyTimeWithDefaultValue(2005,3,25,9,35);
         timeObject.DisplayCurrentMyTimeWithDefaultValue();
     }
 }

           
          


A Simple Class and Objects

   
 


public class Product {
    public string make;
    public string model;
    public string color;
    public int yearBuilt;

    public void Start() {
        System.Console.WriteLine(model + " started");
    }

    public void Stop() {
        System.Console.WriteLine(model + " stopped");
    }

}


class MainClass{

    public static void Main() {
        Product myProduct;

        myProduct = new Product();

        myProduct.make = "Toyota";
        myProduct.model = "MR2";
        myProduct.color = "black";
        myProduct.yearBuilt = 1995;

        System.Console.WriteLine("myProduct details:");
        System.Console.WriteLine("myProduct.make = " + myProduct.make);
        System.Console.WriteLine("myProduct.model = " + myProduct.model);
        System.Console.WriteLine("myProduct.color = " + myProduct.color);
        System.Console.WriteLine("myProduct.yearBuilt = " + myProduct.yearBuilt);

        myProduct.Start();
        myProduct.Stop();

        Product redPorsche = new Product();
        redPorsche.make = "Porsche";
        redPorsche.model = "Boxster";
        redPorsche.color = "red";
        redPorsche.yearBuilt = 2000;
        System.Console.WriteLine(          "redPorsche is a " + redPorsche.model);
        System.Console.WriteLine("Assigning redPorsche to myProduct");
        myProduct = redPorsche;
        System.Console.WriteLine("myProduct details:");
        System.Console.WriteLine("myProduct.make = " + myProduct.make);
        System.Console.WriteLine("myProduct.model = " + myProduct.model);
        System.Console.WriteLine("myProduct.color = " + myProduct.color);
        System.Console.WriteLine("myProduct.yearBuilt = " + myProduct.yearBuilt);
    }
}