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

Extension methods for built-in types in C Sharp (C#) - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is an extension method in C#?
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 for a built-in type like string?
You declare a static method inside a static class, and the first parameter has the <code>this</code> keyword followed by the type you want to extend, for example: <br><pre>public static class StringExtensions {
  public static bool IsCapitalized(this string s) { ... }
}</pre>
Click to reveal answer
intermediate
Can extension methods access private members of the type they extend?
No, extension methods cannot access private or protected members of the type they extend. They only work with the public interface of the type.
Click to reveal answer
intermediate
Why use extension methods instead of inheritance for built-in types?
Built-in types like <code>string</code> are sealed and cannot be inherited. Extension methods let you add functionality without inheritance or modifying the original type.
Click to reveal answer
beginner
How do you call an extension method in your code?
You call an extension method as if it were an instance method on the object, for example: "hello".IsCapitalized(). The compiler translates this to a static method call behind the scenes.
Click to reveal answer
What keyword must the first parameter of an extension method have?
Astatic
Bref
Cpublic
Dthis
Where must extension methods be declared?
AInside a static class
BInside any class
CInside an interface
DInside a sealed class
Can extension methods override existing methods of a type?
ANo, they cannot override existing methods
BYes, always
COnly if the method is virtual
DOnly for built-in types
Which of these is a valid extension method signature for int?
Astatic bool IsEven(int this number)
Bpublic static bool IsEven(this int number)
Cpublic bool IsEven(int this number)
Dpublic static bool IsEven(int number)
How do you use an extension method named WordCount on a string variable text?
AWordCount.text()
BWordCount(text)
Ctext.WordCount()
Dtext->WordCount()
Explain how to create and use an extension method for a built-in type in C#.
Think about how you add new methods without changing the original type.
You got /4 concepts.
    Why are extension methods useful for built-in types like string or int?
    Consider the limits of inheritance with built-in types.
    You got /4 concepts.

      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