Multiple constructors in a class definition

image_pdfimage_print

   

/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa

Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
// Constrct.cs - Demonstrates the use of multiple constructors
//               in a class definition.
//
//               Compile this program with the following command line:
//                   C:>csc Constrct.cs
//
namespace nsConstructor
{
    using System;
    struct POINT
    {
        public POINT (int cx, int cy)
        {
            this.cx = cx;
            this.cy = cy;
        }
        public int cx;
        public int cy;
    }
    public class Constrct
    {
        static public void Main ()
        {
            clsRect rc1 = new clsRect();
            clsRect rc2 = new clsRect (10, 12, 84, 96);
            POINT pt1 = new POINT (10, 12);
            POINT pt2 = new POINT (84, 96);
            clsRect rc3 = new clsRect (pt1, pt2);
        }
    }
    class clsRect
    {
// The following constructor replaces the default constructor
        public clsRect ()
        {
            Console.WriteLine ("Default constructor called");
            m_Left = m_Top = m_Right = m_Bottom  = 0;
        }
        public clsRect (int cx1, int cy1, int cx2, int cy2)
        {
            Console.WriteLine ("Constructor 1 called");
            m_Left = cx1;
            m_Top = cy1;
            m_Right = cx2;
            m_Bottom = cy2;
        }
        public clsRect (POINT pt1, POINT pt2)
        {
            Console.WriteLine ("Constructor 2 called");
            m_Left = pt1.cx;
            m_Top = pt1.cy;
            m_Right = pt2.cx;
            m_Bottom = pt2.cy;
        }
        public POINT UpperLeft
        {
            get {return(new POINT(m_Left, m_Top));}
            set {m_Left = value.cx; m_Top = value.cy;}
        }
        public POINT LowerRight
        {
            get {return(new POINT(m_Right, m_Bottom));}
            set {m_Right = value.cx; m_Bottom = value.cy;}
        }
        private int m_Left;
        private int m_Top;
        private int m_Right;
        private int m_Bottom;
    }
}