C# always creates a structure instance as a value-type variable even using the new operator

image_pdfimage_print

   

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

Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
//
//  ValType.cs -- Demonstrates that C# always creates a structure instance as
//                a value-type variable even using the new operator.
//                Compile this program using the following command line:
//                    C:>csc ValType.cs
//
namespace nsValType
{
    using System;
    public struct POINT
    {
        public int  cx;
        public int  cy;
    }
    public class ValType
    {
        static public void Main()
        {
            POINT point1;
            point1.cx = 42;
            point1.cy = 56;
            ModifyPoint (point1);
            Console.WriteLine ("In Main() point2 = ({0}, {1})", point1.cx, point1.cy);
            POINT point2 = new POINT ();
            
            // point2.cx = 42;
            // point2.cy = 56;
            
            Console.WriteLine ();
            ModifyPoint (point2);
            Console.WriteLine ("In Main() point2 = ({0}, {1})", point2.cx, point2.cy);
        }
        static public void ModifyPoint (POINT pt)
        {
            pt.cx *= 2;
            pt.cy *= 2;
            Console.WriteLine ("In ModifyPoint() pt = ({0}, {1})", pt.cx, pt.cy);
        }
    }
}