Extension methods let you add new actions to existing things without changing their original code.
Extension method syntax in C Sharp (C#)
public static class ClassName { public static ReturnType MethodName(this Type parameter, OtherParameters) { // method body } }
The first parameter has this before the type to mark it as an extension method.
Extension methods must be inside a static class.
WordCount method to all strings.public static class StringExtensions { public static int WordCount(this string str) { return str.Split(' ').Length; } }
IsEven method to all integers.public static class IntExtensions { public static bool IsEven(this int number) { return number % 2 == 0; } }
This program adds a WordCount method to strings and uses it to count words in a sentence.
using System; public static class StringExtensions { public static int WordCount(this string str) { return str.Split(' ', StringSplitOptions.RemoveEmptyEntries).Length; } } class Program { static void Main() { string sentence = "Hello world from C#"; int count = sentence.WordCount(); Console.WriteLine($"Word count: {count}"); } }
Extension methods look like normal methods when called, but they are static methods behind the scenes.
If a class already has a method with the same name and parameters, the class method is used instead of the extension.
Extension methods add new methods to existing types without changing them.
They must be static methods inside static classes, with this before the first parameter.
They make code cleaner and easier to read by allowing method calls directly on objects.
Practice
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 CQuick Check:
Extension methods add methods without changing original type [OK]
- Confusing extension methods with inheritance
- Thinking extension methods override existing methods
- Believing extension methods create new classes
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 BQuick Check:
Extension method syntax requires 'this' before first parameter [OK]
- Omitting 'this' keyword before the first parameter
- Placing 'this' after the parameter type
- Not making the method static
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);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 AQuick Check:
Word count of "Hello world from C#" = 4 [OK]
- Forgetting to make the extension method static
- Assuming Split returns empty array for non-empty string
- Expecting compilation error due to extension method
public static class IntExtensions {
public static bool IsEven(int number) {
return number % 2 == 0;
}
}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 DQuick Check:
Extension method needs 'this' before first parameter [OK]
- Forgetting 'this' keyword on first parameter
- Making method non-static
- Not declaring class as static
IsNullOrEmpty for string that returns true if the string is null or empty. Which of the following is the correct implementation?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 AQuick Check:
Extension method with 'this' and null check is correct [OK]
- Omitting 'this' keyword on first parameter
- Not checking for null before accessing Length
- Making method non-static
Ready to prove it?
Pass the test and this pattern moves unknown
