Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
This keyword behavior
📖 Scenario: Imagine you are creating a simple program to understand how the this keyword works in C#. This keyword helps you refer to the current object inside a class.
🎯 Goal: You will build a class with a field and a method that uses the this keyword to show how it refers to the current object.
📋 What You'll Learn
Create a class called Car with a field color of type string.
Add a constructor that takes a string parameter called color and assigns it to the field using the this keyword.
Add a method called ShowColor that prints the car's color using the this keyword.
Create an object of the Car class with the color "red" and call the ShowColor method.
💡 Why This Matters
🌍 Real World
Understanding the <code>this</code> keyword is important when working with classes and objects in C#. It helps you clearly refer to the current object's data, especially when names overlap.
💼 Career
Many programming jobs require working with object-oriented code. Knowing how <code>this</code> works helps you write clear and bug-free code when creating and managing objects.
Progress0 / 4 steps
1
Create the Car class with a color field
Create a class called Car with a public field color of type string.
C Sharp (C#)
Hint
Use public string color; inside the class to create the field.
2
Add a constructor using the this keyword
Add a constructor to the Car class that takes a string parameter called color and assigns it to the field color using the this keyword.
C Sharp (C#)
Hint
Use this.color = color; inside the constructor to assign the parameter to the field.
3
Add a method to show the car color using this
Add a public method called ShowColor inside the Car class that prints the car's color using this.color with Console.WriteLine.
C Sharp (C#)
Hint
Use Console.WriteLine with this.color inside the method.
4
Create a Car object and call ShowColor
In the Main method, create a Car object called myCar with the color "red" and call the ShowColor method on it.
C Sharp (C#)
Hint
Use Car myCar = new Car("red"); and then myCar.ShowColor(); inside Main.
Practice
(1/5)
1. What does the this keyword refer to inside a class in C#?
easy
A. A local variable inside a method
B. A static method of the class
C. The base class of the current class
D. The current instance of the class
Solution
Step 1: Understand the role of this
The this keyword always points to the current object instance inside its class.
Step 2: Differentiate from other options
It does not refer to static methods, local variables, or base classes.
Final Answer:
The current instance of the class -> Option D
Quick Check:
this = current object [OK]
Hint: Remember: this means current object instance [OK]
Common Mistakes:
Confusing this with static members
Thinking this refers to base class
Assuming this is a local variable
2. Which of the following is the correct way to use this to refer to a class field when a method parameter has the same name?
easy
A. public void SetName(string name) { this.name = name; }
B. public void SetName(string name) { name = name; }
C. public void SetName(string name) { name = this.name; }
D. public void SetName(string name) { SetName = name; }
Solution
Step 1: Identify the naming conflict
The parameter name hides the class field name.
Step 2: Use this to refer to the field
this.name = name; assigns the parameter value to the class field.
Final Answer:
public void SetName(string name) { this.name = name; } -> Option A
Quick Check:
Use this to access fields with same name [OK]
Hint: Use this.field to avoid name conflicts [OK]
Common Mistakes:
Assigning parameter to itself
Reversing assignment order
Using invalid syntax for assignment
3. What will be the output of the following code?
class Person {
public string Name;
public Person(string Name) {
this.Name = Name;
}
public void PrintName() {
Console.WriteLine(this.Name);
}
}
var p = new Person("Alice");
p.PrintName();
medium
A. Name
B. Compilation error
C. Alice
D. null
Solution
Step 1: Analyze constructor assignment
The constructor assigns the parameter Name to the field Name using this.Name = Name;.
Step 2: Check output of PrintName()
The method prints the field Name, which holds "Alice".
Final Answer:
Alice -> Option C
Quick Check:
Constructor sets field, print shows "Alice" [OK]
Hint: Constructor sets field with this, print shows value [OK]
Common Mistakes:
Confusing parameter and field values
Expecting default null output
Thinking this causes error
4. Identify the error in this code snippet:
class Car {
public string Model;
public Car(string Model) {
Model = Model;
}
}
medium
A. Missing this keyword causes field not to be set
B. Constructor syntax is invalid
C. Field Model should be static
D. Parameter name cannot be same as field name
Solution
Step 1: Understand assignment in constructor
The assignment Model = Model; assigns the parameter to itself, not the field.
Step 2: Use this to fix
Using this.Model = Model; assigns the parameter value to the field.
Final Answer:
Missing this keyword causes field not to be set -> Option A
Quick Check:
Use this to assign fields when names overlap [OK]
Hint: Assign fields with this.field = param to avoid errors [OK]
Common Mistakes:
Assuming parameter assigns field automatically
Thinking constructor syntax is wrong
Believing parameter names must differ from fields
5. Consider this class with two constructors:
class Box {
public int Width, Height;
public Box() : this(10, 20) {}
public Box(int Width, int Height) {
this.Width = Width;
this.Height = Height;
}
}
var b = new Box();
Console.WriteLine($"{b.Width}, {b.Height}");
What will be the output and why?
hard
A. 0, 0 because fields are not initialized
B. 10, 20 because the parameterless constructor calls the other constructor using this
C. Compilation error due to constructor chaining
D. Runtime error because of infinite constructor call
Solution
Step 1: Understand constructor chaining with this
The parameterless constructor calls the two-parameter constructor with values 10 and 20.
Step 2: Check field initialization
The two-parameter constructor sets Width and Height to 10 and 20 respectively.
Final Answer:
10, 20 because the parameterless constructor calls the other constructor using this -> Option B
Quick Check:
Constructor chaining with this sets fields [OK]
Hint: Use this(args) to call another constructor [OK]