Mega Code Archive

 
Categories / C# Tutorial / Class
 

Cloneable Point

using System; using System.Collections.Generic; using System.Text; public class Point : ICloneable {     public int x, y;     public PointDescription desc = new PointDescription();     public Point() { }     public Point(int x, int y) {         this.x = x; this.y = y;     }     public Point(int x, int y, string petname) {         this.x = x;         this.y = y;         desc.petName = petname;     }     public object Clone() {         Point newPoint = (Point)this.MemberwiseClone();         PointDescription currentDesc = new PointDescription();         currentDesc.petName = this.desc.petName;         newPoint.desc = currentDesc;         return newPoint;     }     public override string ToString() {         return string.Format("X = {0}; Y = {1}; Name = {2};\nID = {3}\n",x, y, desc.petName, desc.pointID);     } } public class PointDescription {     public string petName;     public Guid pointID;     public PointDescription() {         this.petName = "No-name";         pointID = Guid.NewGuid();     } } class Program {     static void Main(string[] args) {         Point p1 = new Point(50, 50);         Point p2 = p1;         p2.x = 0;         Console.WriteLine(p1);         Console.WriteLine(p2);         Point p3 = new Point(100, 100, "Jane");         Point p4 = (Point)p3.Clone();         Console.WriteLine("p3: {0}", p3);         Console.WriteLine("p4: {0}", p4);         p4.desc.petName = "Mr. X";         p4.x = 9;         Console.WriteLine("p3: {0}", p3);         Console.WriteLine("p4: {0}", p4);     } }