/*
         * readonly double x;
         * // die Parameter auf CPunkt _,  reduzieren oder Polymorphie nutzen oder Umwandeln, bzw. get nutzen...
         *
         * public double Abstand (double x, double y)
         * {
         *      //  Quatsch ... (-) * (-) = + ... -> keine Fallunterscheid. notw.
         *      quadratabstand =  ( x * x ) + ( y * y );
         *
         *
         *      abstand = Math.Sqrt(quadratabstand);
         *      x = abstand;
         *      return x;
         *      // sollte was zurückgeben:   return  ;
         *
         *      //  Konstruktor Aufruf wandert in die Main ---> CPunkt Ursrpung = new CPunkt (0,0);
         * }
         */
        public double Abstand(C_Punkt p)          //
        {
            quadratabstand = (p.X * p.X) + (p.Y * p.Y);
            abstand        = Math.Sqrt(quadratabstand);
            return(abstand);

            //  Konstruktor Aufruf wandert in die Main ---> CPunkt Ursrpung = new CPunkt (0,0);
        }
        // Parameterkonsruktor (CPunkt p)
        public C_Punkt(C_Punkt p)
        {
            this.X = X;             //  TODO! TRY: p.X Im Bezug auf die Übergabe aus der main für B...
            this.Y = Y;

            /*
             * // geschummelt!
             * C_Punkt b = new C_Punkt(10, 20);
             * //return;
             */
        }
        static void Main(string[] args)
        {
            // Konstruktoren werden Aufgerufen
            C_Punkt a = new C_Punkt(10, 20);
            C_Punkt b = a;          //a statt "new C_Punkt(a);"

            C_Punkt c = new C_Punkt // das "();" wurde von IntelliSense gegen {}-Klammern um die X,Y Zuweisung ausgetauscht...
            {
                X = 30,             //aufruf der Methode zum erzeugen der XPosition
                Y = 40              // YPosition
            };

            // und hier der Aufruf des Konstruktors für die Abstandsbestimmung
            //C_Punkt Ursprung = new C_Punkt (0,0);
            Console.WriteLine("Punkt A<" + a.X + "|" + a.Y + ">");
            Console.WriteLine("Punkt B<" + b.X + "|" + b.Y + ">");
            Console.WriteLine("Punkt C<" + c.X + "|" + c.Y + ">");
            Console.WriteLine("Abstand von Punkt b zu <0|0>: " + b.Abstand(b));

            // Beim Debugging (schrittweise) wird deutlich, dass die Ausgabe (Auskommentiert s.u.)
            // auf der Console , die GETTER-Methode nutzt um auf die Werte zuzugreifen!
            // Console.WriteLine("Inhalt von c.X: {0}, c.Y {1}", c.X, c.Y );
        }