Mega Code Archive

 
Categories / C# / Class Interface
 

Demonstrate the use of a nested class to contain data

/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // // Nested.cs -- demonstrate the use of a nested class to contain data // //              Compile this program with the following command line //                  C:>csc Nested.cs // namespace nsReadOnly {     using System;          public class Nested     {         static double DegreeFactor = 1;         static double MilFactor = 0.05625;         static double RadianFactor = 57.29578;         static public void Main ()         {             double angle = 90;             double radius = 50;                          // Declare an instance of the nested class             clsArea.clsData data = new clsArea.clsData (angle, radius,                                                         DegreeFactor);             clsArea InDegrees = new clsArea (data);             // Change the values to mils             data.Factor = MilFactor;             data.Angle = angle * 17.77778;             clsArea InMils = new clsArea (data);             // Change the values to radians             data.Angle = angle / 57.29578;             data.Factor = RadianFactor;             clsArea InRadians = new clsArea (data);             Console.WriteLine ("Area of pie of {0,0:F3} degrees is {1,0:F1}",                                InDegrees.Data.Angle, InDegrees.Area);             Console.WriteLine ("Area of pie of {0,0:F3} radians is {1,0:F1}",                                InRadians.Data.Angle, InRadians.Area);             Console.WriteLine ("Area of pie of {0,0:F3} mils is {1,0:F1}",                                InMils.Data.Angle, InMils.Area);         }     }     class clsArea     {         public class clsData : ICloneable         {             public clsData (double angle, double radius, double factor)             {                 m_Angle = angle;                 m_Radius = radius;                 m_Factor = factor / 57.29578;             }             public double Angle             {                 get {return(m_Angle);}                 set {m_Angle = value;}             }             public double Radius             {                 get {return(m_Radius);}                 set {m_Radius = value;}             }             public double Factor             {                 get {return(m_Factor);}                 set {m_Factor = value / 57.29578;}             }             private double m_Angle = 0;             private double m_Radius = 0;             private double m_Factor = 1;             public object Clone ()             {                 clsData clone = new clsData (m_Angle, m_Radius,                                              m_Factor * 57.29578);                 return (clone);             }         }         public clsArea (clsData data)         {             // Clone the data object to get a copy for ourselves             m_Data = (clsData) data.Clone();         }         public clsData Data         {             get {return (m_Data);}         }         private clsData m_Data;         private const double pi = 3.14159;         private const double radian = 57.29578;         public double Area         {             get             {                return (m_Data.Radius * m_Data.Radius * pi                        * m_Data.Angle * m_Data.Factor /  (2 * pi));             }         }     } }