Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

C# C# Objects Encapsulation with Properties Computed Properties

Josh Boersma
PLUS
Josh Boersma
Courses Plus Student 2,486 Points

Computed Properties

I don't understand how computed properties work. I can't tell how they are different from methods because they look the exact same. I am supposed to code a computed property named Area that returns the area of the square, but every solution I have provided is rejected. Any pointers would be much appreciated.

Square.cs
namespace Treehouse.CodeChallenges
{
    class Square : Polygon
    {
        public double SideLength { get; private set; }
        public Square(double sideLength) : base(4) {
            SideLength = sideLength;
        }
        public double Area(){
            get { 
                return SideLength * SideLength;
            }
        }
    }
}
Polygon.cs
namespace Treehouse.CodeChallenges
{
    public class Polygon
    {
        public int NumSides { get; private set; }

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

1 Answer

Michael Hulet
MOD
Michael Hulet
Treehouse Moderator 47,835 Points

Computed properties don't quite look like methods. Namely, since they will never take any parameters by definition, you don't use parentheses to define them or call them. You'll just use the get keyword with brackets, and put the code you need to compute its value between those brackets. It'd look something like this:

namespace Example
{
    class Triangle : Polygon
    {
        public double baseLength{ get; private set; }
        public double height{ get; private set; }
        public double Area{
            get{
                return 0.5 * baseLength * height;
            }
        }
    }
}
Josh Boersma
Josh Boersma
Courses Plus Student 2,486 Points

I changed my code to mirror yours, but it still failed to compile (I'm at work and can't look at errors cause web filter). Do you have any other tips. Your suggested code (my question's code is updated to match) is the first thing I tried. I'm not sure what they're looking for.

Michael Hulet
Michael Hulet
Treehouse Moderator 47,835 Points

When I changed my code to be similar, I passed the challenge, so it'd be helpful to know the error messages you're getting. I'd love to help once you get back from work and see what they are! Also, it's important to note that my code above doesn't pass the challenge because it's doing something different than what is asked. It illustrates the concept of why your code above doesn't pass, but Treehouse doesn't like it when someone posts an answer that can be copied and pasted directly into a challenge and pass, so I made mine a bit different than what the challenge wants