Fehler: get - set Accessor erwartet



  • Hallo Com und schönen Sonntag 🙂

    Ich bin gerade dabei mir mit dem Buch Visual C# 2010 C# beizubringen.
    Hat bis jetzt keine Probleme bereitet, jedoch stehe ich gerade an.

    namespace CircleApplication
    {
        class Circle
        {
            private int xCoord;
            private int yCoord;
            private double radius;
    
            public int XCoord       { get; set; }
            public int YCoord       { get; set; }
            public double Radius  // hier mein get-set-Accessor
            {
                get;
                set
                {
                    if (value >= 0)
                        radius = value;
                    else
                        Console.WriteLine("Cannot create negative radius!");
                }
            }
    
            public Circle(int XPos, int YPos, double Rad)
            {
                xCoord = XPos;
                yCoord = YPos;
                radius = Rad;
            }
    
            public int GetCircumference
            {
                return Radius * 2 * 3.1415; // hier die fehlerhafte Zeile
            }
    
        }
    }
    

    Die Fehlermeldung lautet:

    get- oder set- Accessor erwartet.
    

    Ich stehe voll an und weiß nicht, warum er der Compiler meckert.
    Vielen lieben Dank 🙂



  • Du musst beim Radius Property den get Accessor implementieren.

    public double Radius  // hier mein get-set-Accessor 
    { 
      get
      {
        return radius;
      }
      set
      {
        // ...
      }
    }
    

    Ausserdem musst du entweder die Properties XCoord bzw. YCoord impl. (also keine auto-generierten Properties benutzen) oder dann die Membervariablenn xCoord bzw. yCoord weglassen und dafür gleich die Properties benutzen. Im Moment haben xCoord und XCoord bzw. yCoord und YCoord nichts miteinander zu tun.



  • Hallo theta.
    Ich habe den get-Zweig jetzt implementiert, die beiden Coord-Accessoren angepasst und eine weitere Funktion hinzugefügt. Aber der Fehler ist nicht verschwunden. Ich habe den Code jetzt mehrmals verglichen und komme nicht drauf wo der Fehler liegen könnte.
    Meine IDE ist Visual Studio 2012 Express.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CircleApplication
    {
        class Circle
        {
            private int xCoord;
            private int yCoord;
            private double radius;
    
            public int XCoord
            { 
                get{ return xCoord; }
                set{ xCoord = value; }
            }
    
            public int YCoord
            { 
                get{ return yCoord; }
                set{ yCoord = value; }
            }
    
            public double Radius
            {
                get
                {
                    return radius;
                }
                set
                {
                    if (value >= 0)
                        radius = value;
                    else
                        Console.WriteLine("Cannot create negative radius!");
                }
            }
    
            public void MoveXY( int XPos, int YPos )
            {
                XCoord += XPos;
                YCoord += YPos;
            }
    
            public Circle(int XPos, int YPos, double Rad)
            {
                xCoord = XPos;
                yCoord = YPos;
                radius = Rad;
            }
    
            public double GetCircumference
            {
                return Radius * 2 * 3.1415;  //Hier Fehler(Das return wird unterstrichen)
            }
    
            public double GetArea
            {
                return Math.Pow(Radius, 2) * 3.1415;  //Das selbe
            }
    
        }
    }
    

    Fehlermeldung dieselbe.

    get- oder set- Accessor erwartet.
    


  • Zeige mal die Verwendung der Klasse Circle.
    Ausserdem sagt dir vermutlich der Kompiler auf welches Zeile im Sourcecode das Problem auftritt. Wo ist das?



  • Hallo theta.
    Die Klasse wird noch nicht verwendet. Ich wollte sie zuerst vervollständigen, bevor ich mit der Main anfange.

    Der Fehler befindet sich in Zeile 57 und 62. Beides Mal Spalte 13 (das return wird rot unterstrichen).
    Die vollständige Fehlermeldung:

    get- oder set-Accessor erwartet.
    

    Mehr steht nicht da.



  • 🕶 Jetzt seh ich das Problem erst:

    public double GetCircumference
    {
      // ..
    }
    

    vs

    public double GetCircumference()
    {
      // ..
    }
    


  • OMG 😮
    Seit über 4 Stunden schon versuche ich den Fehler zu finden.Jetzt funktionierts.
    Danke theta. 👍
    Und schönen restlichen Sonntag noch.



  • Oder aber auch hier eine Eigenschaft daraus machen:

    public double Circumference
    {
       get { return Radius * 2 * 3.1415; }
    }
    

    Und dasselbe für (Get)Area...


Log in to reply