An extension method is a special kind of static method that allows you to add new methods to existing types without modifying their source code or creating a new derived type.
Click to reveal answer
beginner
How do you declare an extension method in C#?
You declare an extension method as a static method inside a static class. The first parameter has the keyword this before the type it extends.
Click to reveal answer
intermediate
Why must the class containing extension methods be static?
Because extension methods are static methods, the class that holds them must also be static to group these methods logically and prevent instantiation.
Click to reveal answer
beginner
Example: What does this extension method do?
public static bool IsEven(this int number) { return number % 2 == 0; }
This method adds IsEven() to all integers. It returns true if the number is even (divisible by 2), otherwise false.
Click to reveal answer
beginner
How do you use an extension method once it is declared?
You call it like a regular instance method on the type it extends. For example, if IsEven() extends int, you can call 5.IsEven().
Click to reveal answer
Which keyword is required before the first parameter in an extension method?
Aref
Bstatic
Cpublic
Dthis
✗ Incorrect
The this keyword before the first parameter tells the compiler this is an extension method for that type.
Where must extension methods be declared?
AInside any class
BInside a static class
CInside an interface
DInside a struct
✗ Incorrect
Extension methods must be declared inside a static class.
What type of method is an extension method?
AStatic method
BAbstract method
CVirtual method
DInstance method
✗ Incorrect
Extension methods are static methods that appear as if they are instance methods.
How do you call an extension method on a string variable named text?
Atext.Method()
BExtensionClass.Method(text)
CMethod(text)
DCallExtension(text)
✗ Incorrect
You call an extension method like an instance method on the variable, e.g., text.Method().
Can extension methods access private members of the type they extend?
AYes, always
BOnly if in the same namespace
CNo, they cannot
DOnly if marked internal
✗ Incorrect
Extension methods cannot access private members of the type they extend because they are static methods outside the type.
Explain how to write and use an extension method in C#.
Think about how you add a new method to an existing type without changing its code.
You got /4 concepts.
What are the benefits of using extension methods?
Consider how extension methods help when you want new features on types you don't own.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of an extension method in C#?
easy
A. To override existing methods in a class
B. To create new classes that inherit from existing ones
C. To add new methods to existing types without modifying their source code
D. To define constructors for existing classes
Solution
Step 1: Understand extension method purpose
Extension methods allow adding new functionality to existing types without changing their original code.
Step 2: Compare with other options
Options B, C, and D describe inheritance, overriding, and constructors, which are different concepts.
Final Answer:
To add new methods to existing types without modifying their source code -> Option C
Quick Check:
Extension methods add methods without changing original type [OK]
Hint: Extension methods add functionality without changing original code [OK]
2. Which of the following is the correct syntax to declare an extension method in C#?
easy
A. public void MyExtension(string this str) { }
B. public static void MyExtension(this string str) { }
C. static public void MyExtension(string str) { }
D. public static void MyExtension(string str) { }
Solution
Step 1: Check extension method declaration rules
Extension methods must be static methods inside static classes, and the first parameter must have the 'this' keyword before the type.
Step 2: Analyze each option
public static void MyExtension(this string str) { } correctly uses 'public static void' and 'this string str'. public void MyExtension(string this str) { } misplaces 'this'. static public void MyExtension(string str) { } misses 'this'. public static void MyExtension(string str) { } misses 'this' keyword.
Final Answer:
public static void MyExtension(this string str) { } -> Option B
Quick Check:
Extension method syntax requires 'this' before first parameter [OK]
Hint: Remember 'this' before first parameter in static method [OK]
Common Mistakes:
Omitting 'this' keyword before the first parameter
Placing 'this' after the parameter type
Not making the method static
3. What will be the output of the following code?
public static class StringExtensions {
public static int WordCount(this string str) {
return str.Split(' ').Length;
}
}
string sentence = "Hello world from C#";
int count = sentence.WordCount();
Console.WriteLine(count);
medium
A. 4
B. 1
C. 0
D. Compilation error
Solution
Step 1: Understand the extension method behavior
The method WordCount splits the string by spaces and returns the number of parts.
Step 2: Count words in the string
The string "Hello world from C#" has 4 words separated by spaces, so the method returns 4.
Final Answer:
4 -> Option A
Quick Check:
Word count of "Hello world from C#" = 4 [OK]
Hint: Count words by splitting string on spaces [OK]
Common Mistakes:
Forgetting to make the extension method static
Assuming Split returns empty array for non-empty string
Expecting compilation error due to extension method
4. Identify the error in the following extension method code:
public static class IntExtensions {
public static bool IsEven(int number) {
return number % 2 == 0;
}
}
medium
A. The method is not static
B. The class is not static
C. The method should return int instead of bool
D. The first parameter is missing the 'this' keyword
Solution
Step 1: Check extension method parameter syntax
Extension methods require the first parameter to have the 'this' keyword before the type to indicate the extended type.
Step 2: Analyze the code
The method IsEven has 'int number' as parameter but lacks 'this' keyword, so it is not a valid extension method.
Final Answer:
The first parameter is missing the 'this' keyword -> Option D
Quick Check:
Extension method needs 'this' before first parameter [OK]
Hint: Extension method's first parameter must start with 'this' [OK]
Common Mistakes:
Forgetting 'this' keyword on first parameter
Making method non-static
Not declaring class as static
5. You want to create an extension method IsNullOrEmpty for string that returns true if the string is null or empty. Which of the following is the correct implementation?
hard
A. public static bool IsNullOrEmpty(this string str) { return str == null || str == ""; }
B. public bool IsNullOrEmpty(string str) { return str == null || str == ""; }
C. public static bool IsNullOrEmpty(string str) { return str == null || str == ""; }
D. public static bool IsNullOrEmpty(this string str) { return str.Length == 0; }
Solution
Step 1: Check extension method signature
The method must be static and have 'this' before the first parameter type to be an extension method.
Step 2: Verify method logic
public static bool IsNullOrEmpty(this string str) { return str == null || str == ""; } correctly checks if the string is null or empty. public static bool IsNullOrEmpty(this string str) { return str.Length == 0; } misses null check, which causes error if str is null.
Final Answer:
public static bool IsNullOrEmpty(this string str) { return str == null || str == ""; } -> Option A
Quick Check:
Extension method with 'this' and null check is correct [OK]
Hint: Check null before accessing string properties in extension [OK]
Common Mistakes:
Omitting 'this' keyword on first parameter
Not checking for null before accessing Length
Making method non-static
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.