C# C# Objects Inheritance Inheritance

The Polygon class represents a 2 dimensional shape. It has a public field named NumSides. Create a new type of polygon c

Hey Team,

I am new to C#, need a bit of help in understanding the completing this question. I keep on getting with the attached code.

Polygon.cs
namespace Treehouse.CodeChallenges
{
    class Polygon
    {
        public readonly int NumSides;

        public Polygon(int numSides)
        {
            NumSides = numSides;
        }
    }
    class Square : Polygon
    {
     public readonly int SideLength;

     public Square(int sideLength)
     {
     base.Numsides = 4;
     }

    }
}

1 Answer

Steven Parker
Steven Parker
177,483 Points

Since "NumSides" (note: spelled with capital "S") is readonly, it cannot be assigned to except by calling the base constructor. This is done with the colon syntax when defining the derived class constructor:

     public Square(int sideLength) : base(4)

Hi Steven,

Thanks for the response. I did try the above syntax and now I started to get a new error:

"Polygon.cs(14,5): error CS1519: Unexpected symbol `}' in class, struct, or interface member declaration"

Code:

namespace Treehouse.CodeChallenges { class Polygon { public readonly int NumSides;

    public Polygon(int numSides)
    {
        NumSides = numSides;
    }
}

class Square : Polygon
{
    public readonly int SideLength;
    public Square(int sideLength) : base(4)
}

}

Steven Parker
Steven Parker
177,483 Points

The constructor still needs a body in which the argument will be stored in the field, similar to what is done in the "Polygon" class.