Bird
Raised Fist0
C Sharp (C#)programming~10 mins

Extension methods for built-in types in C Sharp (C#) - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Extension methods for built-in types
Define static class
↓
Write static method with 'this' parameter
↓
Use method on built-in type instance
↓
Compiler treats call as static method call
↓
Method executes and returns result
Extension methods are static methods that look like instance methods on built-in types by using 'this' keyword in the first parameter.
Execution Sample
C Sharp (C#)
public static class StringExtensions {
    public static bool IsCapitalized(this string s) {
        return s.Length > 0 && char.IsUpper(s[0]);
    }
}

string word = "Hello";
bool result = word.IsCapitalized();
This code adds an extension method to string to check if the first letter is uppercase.
Execution Table
StepCode LineActionValue/Result
1Define static class StringExtensionsPrepare container for extension methodsClass ready
2Define static method IsCapitalized(this string s)Method ready to extend stringMethod ready
3Call word.IsCapitalized()Compiler converts to IsCapitalized(word)word = "Hello"
4Check s.Length > 0Evaluate length5 (true)
5Check char.IsUpper(s[0])Check first char 'H'true
6Return trueMethod returnstrue
💡 Method returns true because 'Hello' starts with uppercase letter
Variable Tracker
VariableStartAfter Step 3After Step 4After Step 5Final
word"Hello""Hello""Hello""Hello""Hello"
sN/A"Hello""Hello""Hello""Hello"
resultN/AN/AN/AN/Atrue
Key Moments - 3 Insights
Why do we use 'this' keyword in the method parameter?
The 'this' keyword tells the compiler this method extends the type of that parameter, so it can be called like an instance method (see Step 2 and Step 3).
Is the extension method actually part of the built-in type?
No, the method is static in a separate class. The compiler just allows calling it like an instance method for convenience (Step 3).
What happens if the string is empty?
The method checks length > 0 first (Step 4). If false, it returns false without checking the first character.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'result' after Step 6?
Anull
Bfalse
Ctrue
DException
💡 Hint
Check the 'Value/Result' column at Step 6 in the execution_table.
At which step does the method check if the first character is uppercase?
AStep 4
BStep 5
CStep 3
DStep 6
💡 Hint
Look at the 'Action' column describing char.IsUpper check in the execution_table.
If the string was empty, what would happen at Step 4?
ALength check returns false
BLength check returns true
CMethod throws exception
DMethod skips length check
💡 Hint
Refer to Step 4 where length is checked before accessing first character.
Concept Snapshot
Extension methods let you add new methods to existing types without changing them.
Define a static method in a static class.
Use 'this' before the first parameter to specify the type to extend.
Call the method like an instance method on that type.
Compiler converts it to a static method call behind the scenes.
Full Transcript
Extension methods in C# allow you to add new methods to built-in types like string without modifying their original code. You write a static method inside a static class, and the first parameter uses the 'this' keyword to specify which type you are extending. When you call this method on an instance of that type, the compiler treats it as a static method call but lets you write it as if it were an instance method. For example, the IsCapitalized method checks if the first letter of a string is uppercase. The execution steps show defining the method, calling it on a string, checking the string length, checking the first character, and returning the result. This makes your code cleaner and easier to read while extending functionality.

Practice

(1/5)
1. What is the main purpose of an extension method in C#?
easy
A. To add new methods to existing types without modifying their source code
B. To create a new class that inherits from a built-in type
C. To override existing methods in built-in types
D. To replace built-in types with custom implementations

Solution

  1. Step 1: Understand extension method purpose

    Extension methods allow adding new functionality to existing types without changing their original code.
  2. Step 2: Compare options

    Replacing built-in types with custom implementations, creating a new class that inherits from a built-in type, or overriding existing methods are different concepts from extension methods.
  3. Final Answer:

    To add new methods to existing types without modifying their source code -> Option A
  4. Quick Check:

    Extension methods add new actions without changing original types [OK]
Hint: Extension methods add features without changing original code [OK]
Common Mistakes:
  • Confusing extension methods with inheritance
  • Thinking extension methods override existing methods
  • Believing extension methods replace built-in types
2. Which of the following is the correct syntax to declare an extension method for the built-in string type?
easy
A. public void MyMethod(string this str) { }
B. public static void MyMethod(this string str) { }
C. static void MyMethod(string str) { }
D. public static void MyMethod(string str) { }

Solution

  1. Step 1: Recall extension method syntax

    Extension methods must be static methods inside static classes, with this before the first parameter type.
  2. Step 2: Check options

    Only public static void MyMethod(this string str) { } uses this string str correctly. The other options miss the this keyword or static modifier.
  3. Final Answer:

    public static void MyMethod(this string str) { } -> Option B
  4. Quick Check:

    Extension method syntax requires 'this' before first parameter [OK]
Hint: Look for 'this' keyword before first parameter in static method [OK]
Common Mistakes:
  • Omitting the 'this' keyword before the first parameter
  • Not making the method static
  • Placing 'this' after the parameter name
3. Given the following code, what will be the output?
public static class StringExtensions {
    public static bool IsCapitalized(this string s) {
        return !string.IsNullOrEmpty(s) && char.IsUpper(s[0]);
    }
}

class Program {
    static void Main() {
        string word = "Hello";
        Console.WriteLine(word.IsCapitalized());
    }
}
medium
A. True
B. False
C. Compilation error
D. Runtime exception

Solution

  1. Step 1: Understand the extension method logic

    The method checks if the string is not null or empty and if the first character is uppercase.
  2. Step 2: Analyze the input string

    The string "Hello" starts with 'H', which is uppercase, so the method returns true.
  3. Final Answer:

    True -> Option A
  4. Quick Check:

    First letter uppercase in "Hello" means IsCapitalized() returns True [OK]
Hint: Check if first character is uppercase and string is not empty [OK]
Common Mistakes:
  • Assuming method returns false for capitalized words
  • Confusing null or empty check logic
  • Expecting compilation error due to extension method
4. Identify the error in this extension method code:
public static class IntExtensions {
    public static bool IsEven(int number) {
        return number % 2 == 0;
    }
}
medium
A. The method must be inside a non-static class
B. The method cannot return bool
C. The method must be static and have 'this' before the first parameter
D. The method name cannot be 'IsEven'

Solution

  1. Step 1: Check extension method requirements

    Extension methods must be static and the first parameter must have the 'this' keyword to specify the type being extended.
  2. Step 2: Identify missing 'this' keyword

    The method parameter 'int number' lacks 'this', so it is not a valid extension method.
  3. Final Answer:

    The method must be static and have 'this' before the first parameter -> Option C
  4. Quick Check:

    Extension methods require 'this' keyword on first parameter [OK]
Hint: Extension method first parameter must have 'this' keyword [OK]
Common Mistakes:
  • Forgetting 'this' before the first parameter
  • Placing method in non-static class
  • Using instance methods instead of static
5. You want to create an extension method for List<int> that returns the sum of all even numbers in the list. Which of the following implementations correctly achieves this?
hard
A. public static int SumEven(this List<int> list) { return list.Sum(n => n % 2); }
B. public int SumEven(List<int> list) { return list.Where(n => n % 2 == 0).Sum(); }
C. public static int SumEven(List<int> list) { return list.Sum(n => n % 2 == 0); }
D. public static int SumEven(this List<int> list) { int sum = 0; foreach(var n in list) { if(n % 2 == 0) sum += n; } return sum; }

Solution

  1. Step 1: Verify extension method signature

    public static int SumEven(this List<int> list) { int sum = 0; foreach(var n in list) { if(n % 2 == 0) sum += n; } return sum; } and the version using list.Sum(n => n % 2) have 'this List<int> list' parameter, making them extension methods. The others lack 'this'.
  2. Step 2: Check logic correctness

    public static int SumEven(this List<int> list) { int sum = 0; foreach(var n in list) { if(n % 2 == 0) sum += n; } return sum; } sums even numbers correctly using a loop and condition. public static int SumEven(this List<int> list) { return list.Sum(n => n % 2); } sums n % 2 which returns 0 or 1, not the number itself. The others are not extension methods.
  3. Final Answer:

    public static int SumEven(this List<int> list) { int sum = 0; foreach(var n in list) { if(n % 2 == 0) sum += n; } return sum; } -> Option D
  4. Quick Check:

    Extension method with correct sum logic is public static int SumEven(this List<int> list) { int sum = 0; foreach(var n in list) { if(n % 2 == 0) sum += n; } return sum; } [OK]
Hint: Use 'this' and sum only even numbers correctly [OK]
Common Mistakes:
  • Missing 'this' keyword for extension method
  • Incorrect lambda in Sum causing wrong results
  • Not filtering even numbers before summing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard