Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

C# C# Objects Encapsulation with Properties Expression Bodied Members

M. Brown
M. Brown
29,923 Points

Step 2 help

This is what I have but it isn't accepting it.

Square.cs
namespace Treehouse.CodeChallenges
{
    class Square : Polygon
    {
        public double SideLength { get; private set; }

        public double Area => SideLength * SideLength;

        public Square(double sideLength) : base(4)
        {
            SideLength = sideLength;
        }

        public double Scale => SideLength * factor

    }
}
Polygon.cs
namespace Treehouse.CodeChallenges
{
    class Polygon
    {
        public int NumSides { get; private set; }

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

3 Answers

Steven Parker
Steven Parker
231,268 Points

You're have an undefined reference and a missing semicolon.

Both on this line:

        public double Scale => SideLength * factor

The term factor referenced here does not appear to be defined. Before conversion to single line, this method had a parameter and it still should afterwards. Try again and be sure to retain the parameter.

M. Brown
M. Brown
29,923 Points

namespace Treehouse.CodeChallenges { class Square : Polygon { public double SideLength { get; private set; }

    public double Area => SideLength * SideLength;

    public Square(double sideLength) : base(4)
    {
        SideLength = sideLength;
    }

    public double factor { get; private set; }

    public double Scale => SideLength * factor;

}

}

is what I put down next.

It still doesn't work.

Steven Parker
Steven Parker
231,268 Points

You still have not retained the parameter.

And you created a new property which is not part of the challenge. Take another look at the original method that you are being asked to convert:

        public void Scale(double factor)
        {
            SideLength *= factor;
        }

Notice that this method takes a parameter named factor. While you convert the definition to the single-line style, be careful not to change the "method signature" (how it actually works). So be sure your method still takes the same parameter after conversion as it does to start with. The top line of the old definition will be the same as everything on the left side of the "=>" in the new one.