IDisposable interface

using System;
namespace Client.Chapter_5___Building_Your_Own_Classes
      public class DTOR: IDisposable
           public static int[] MyIntArray;
           private static int ObjectCount = 0;
           private bool Disposed = false;
           static void Main(string[] args)
                 MyIntArray = new int[10];
            //Used to clean up and free unmanaged resources

            //Never mark this class as virtual as you do not want derived 
            //classes to be able to override it.
            public void Dispose()
                  //if this class is derived then call the base
                  //class dispose.
                  //Call the overloaded version of dispose
                  //Tell the CLR not to run the finalizer this way
                  //you do not free unmanaged resources twice

            //If user calls dispose both managed and unmanaged resources
            //are freed
            //If the finalizer is called then only unmanaged resources are freed
            private void Dispose(bool disposing)
                              //free any managed resources
                         //free unmanaged resources
                  Disposed = true;
            //This finalizer method is called by the GC,
            //not the user. The net result of having this is that
            //the object will always survive the first GC cycle and
            //will be collected the next time GC1 is collected.