Demonstrate the use of readonly variables

image_pdfimage_print

   

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

Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/

//
// ReadOnly.cs -- demonstrate the use of readonly variables
//
//                Compile this program with the following command line
//                    C:>csc ReadOnly.cs
//
namespace nsReadOnly
{
    using System;
    
    public class ReadOnly
    {
        static double DegreeFactor = 1;
        static double MilFactor = 0.05625;
        static public void Main ()
        {
            double degrees = 42;
            
            // 1 degree = 17.77778 mils
            double mils = degrees * 17.77778;
            
            // 1 degree = 0.017453 radians
            double radians = degrees * 0.017453;
            clsArea InDegrees = new clsArea (DegreeFactor);
            InDegrees.Angle = degrees;
            InDegrees.Radius = 50;
            Console.WriteLine ("Area of circle is {0,0:F1}", InDegrees.Area);

            // Radians are the default, so you can use the parameterless 
            // constructor
            clsArea InRadians = new clsArea ();
            InRadians.Angle = radians;
            InRadians.Radius = 50;
            Console.WriteLine ("Area of circle is {0,0:F1}", InRadians.Area);

            clsArea InMils = new clsArea (MilFactor);
            InMils.Angle = mils;
            InMils.Radius = 50;
            Console.WriteLine ("Area of circle is {0,0:F1}", InMils.Area);
        }
    }
    class clsArea
    {
        public clsArea ()
        {
        }
        public clsArea (double factor)
        {
            m_Factor = factor / 57.29578;
        }
        private const double pi = 3.14159;
        private const double radian = 57.29578;
        private readonly double m_Factor = 1;
        public double Angle
        {
            get {return (m_Angle);}
            set {m_Angle = value;}
        }
        public double Radius
        {
            get {return (m_Radius);}
            set {m_Radius = value;}
        }
        private double m_Angle;
        private double m_Radius;
        public double Area
        {
            get
            {
               return (m_Radius * m_Radius * pi * m_Angle * m_Factor /  (2 * pi));
            }
        }
    }
}