/// <summary> /// While a struct is a value type, a class is a reference type. /// Value types hold their value in memory where they are declared, /// but reference types hold a reference to an object in memory. /// /// If you copy a struct, /// C# creates a new copy of the object and /// assigns the copy of the object to a separate struct instance. /// However, /// if you copy a class, /// C# creates a new copy of the reference to the object and /// assigns the copy of the reference to the separate class instance. /// </summary> /// <param name="args"></param> static void Main(string[] args) { //rectangle rect1 = new rectangle(); //rect1.width = 1; //rect1.height = 3; //Rectangle rect1 = new Rectangle //{ // Width = 1, // Height = 3 //}; OverLoadRectangle rect1 = new OverLoadRectangle(); rect1.Width = 1; rect1.Height = 3; Console.WriteLine("rect1: {0}:{1}", rect1.Width, rect1.Height); OverLoadRectangle rect2 = new OverLoadRectangle(5, 7); Console.WriteLine("rect2: {0}:{1}", rect2.Width, rect2.Height); OverLoadRectangle rect3 = rect1.Add(rect2); Console.WriteLine("rect3: {0}:{1}", rect3.Width, rect3.Height); Console.ReadKey(); }
/// <summary> /// In this case, /// the Add method will increase the Height and Width of the current Rectangle instance /// by adding the Height and Width in the rect parameter. /// /// The result of the method is a new Rectangle with the added properties. /// </summary> /// <param name="rect"></param> /// <returns></returns> public OverLoadRectangle Add(OverLoadRectangle rect) { OverLoadRectangle newRect = new OverLoadRectangle(); newRect.Width = Width + rect.Width; newRect.Height = Height + rect.Height; return newRect; }