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 trialIkechukwu Arum
5,337 PointsThe "this" keyword usage is confusing here. The Onmap method takes one parameter of type "Point". Why use "this" here?
public bool OnMap(Point point) { return point.X >= 0 && point.X < Width && point.Y >= 0 && point.Y < Height; }
and then:
namespace TreehouseDefense { class MapLocation : Point { public MapLocation(int x, int y, Map map) : base(x, y) { if(!map.OnMap(this)) { throw new System.Exception(); } } } }
2 Answers
Steven Parker
231,271 PointsUsing "this" is a reference to the current object, in this case a "MapLocation". And since "MapLocation" inherits from "Point", it is valid to use it as an argument to a method that expects a "Point" as a parameter.
The nature of inheritance is that a class that inherits from another can be thought of as a specific kind of the other. So a "MapLocation" is a specific kind of "Point".
Ikechukwu Arum
5,337 Pointsthanks Steve, it makes a lot more sense now
Ikechukwu Arum
5,337 PointsIkechukwu Arum
5,337 Pointsthanks, but here is my struggle:
using System;
public struct Complex { public int real; public int imaginary;
public Complex(int real, int imaginary) { this.real = real; this.imaginary = imaginary; }
The above code shows the usage of "this" keyword that i understand. i just struggle with applying the same understanding to the MapLocation constructor. I just can't visualize how onMap method goes from accepting a parameter of type Point to accepting the "this" keyword and what that has to do with the x and y parameter(of type int) in the MapLocation constructor. Is there and easier way to explain this to me?
Steven Parker
231,271 PointsSteven Parker
231,271 PointsWhile the "MapLocation" is being constructed, it passes itself (since it is also a "Point") to the "OnMap" method to validate the x and y positions it contains
From the perspective of the "OnMap" method, it only knows that it is being passed a "Point" which it refers to using the parameter name "point". It has no idea that the "this" keyword was used when calling it.