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

Generic method declaration in C Sharp (C#) - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a generic method in C#?
A generic method is a method that is declared with type parameters, allowing it to work with any data type while maintaining type safety.
Click to reveal answer
beginner
How do you declare a generic method in C#?
You declare a generic method by adding type parameters in angle brackets after the method name, before the parameter list, like public T Echo<T>(T input).
Click to reveal answer
beginner
Example: What does this method do? public T Echo<T>(T input) { return input; }
This method returns the same value it receives, and it works with any type because of the generic type parameter T.
Click to reveal answer
intermediate
Why use generic methods instead of object type parameters?
Generic methods keep type safety and avoid boxing/unboxing, so the compiler checks types and performance is better.
Click to reveal answer
intermediate
Can generic methods have constraints? Give an example.
Yes, constraints limit the types that can be used. Example: public T CreateInstance<T>() where T : new() { return new T(); } means T must have a parameterless constructor.
Click to reveal answer
How do you declare a generic method in C#?
AAdd type parameters in angle brackets after the method name
BUse the keyword 'generic' before the method name
CDeclare the method inside a generic class only
DUse 'var' keyword for the method return type
What is the benefit of using generic methods?
AThey make the code run faster by skipping type checks
BThey allow working with any data type while keeping type safety
CThey only work with reference types
DThey replace the need for classes
Which of these is a valid generic method declaration?
Apublic GetValue<T>(T value) { return value; }
Bpublic T GetValue(value) { return value; }
Cpublic T GetValue<T>(T value) { return value; }
Dpublic T GetValue<T> { return value; }
What does the constraint 'where T : new()' mean in a generic method?
AT must be a reference type
BT must be a value type
CT must inherit from a specific class
DT must have a parameterless constructor
Can generic methods be declared inside non-generic classes?
AYes, generic methods can be inside any class
BNo, only generic classes can have generic methods
COnly static classes can have generic methods
DOnly abstract classes can have generic methods
Explain how to declare a generic method in C# and why it is useful.
Think about how you can write one method that works with many types safely.
You got /4 concepts.
    Describe what constraints are in generic methods and give an example.
    Constraints tell the compiler what kind of types can be used.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the purpose of declaring a generic method in C# using <T>?
      easy
      A. To allow the method to work with any data type specified when called
      B. To restrict the method to only work with integers
      C. To make the method private
      D. To declare a method that returns void only

      Solution

      1. Step 1: Understand generic method declaration

        Generic methods use <T> to represent a placeholder for any type, making the method flexible.
      2. Step 2: Identify the purpose of <T>

        The <T> allows the method to accept or return any type specified at call time, improving reuse.
      3. Final Answer:

        To allow the method to work with any data type specified when called -> Option A
      4. Quick Check:

        Generic <T> means flexible type [OK]
      Hint: Generic <T> means method works with any type [OK]
      Common Mistakes:
      • Thinking <T> restricts to one type like int
      • Confusing generic methods with access modifiers
      • Assuming generic methods always return void
      2. Which of the following is the correct syntax to declare a generic method named PrintItem that takes one parameter of type T?
      easy
      A. public void PrintItem<T>(item T) { Console.WriteLine(item); }
      B. public <T> void PrintItem(T item) { Console.WriteLine(item); }
      C. public void PrintItem<T>(T item) { Console.WriteLine(item); }
      D. public void PrintItem(T item) { Console.WriteLine(item); }

      Solution

      1. Step 1: Review generic method syntax

        The generic type parameter <T> must come immediately after the method name.
      2. Step 2: Check parameter declaration

        The parameter should be declared as type T, followed by the parameter name.
      3. Final Answer:

        public void PrintItem<T>(T item) { Console.WriteLine(item); } -> Option C
      4. Quick Check:

        Generic <T> after method name, parameter type T [OK]
      Hint: Put <T> right after method name for generics [OK]
      Common Mistakes:
      • Placing <T> before return type
      • Omitting <T> after method name
      • Swapping parameter type and name
      3. What will be the output of the following code?
      public class Program {
          public static void ShowType<T>(T value) {
              Console.WriteLine(typeof(T));
          }
          public static void Main() {
              ShowType(123);
              ShowType("hello");
          }
      }
      medium
      A. 123 hello
      B. System.Int32 System.String
      C. T T
      D. System.Object System.Object

      Solution

      1. Step 1: Understand typeof(T) in generic method

        typeof(T) returns the actual type used when the method is called.
      2. Step 2: Analyze calls ShowType(123) and ShowType("hello")

        First call uses int (System.Int32), second uses string (System.String).
      3. Final Answer:

        System.Int32 System.String -> Option B
      4. Quick Check:

        typeof(T) shows actual type [OK]
      Hint: typeof(T) prints actual type used at call [OK]
      Common Mistakes:
      • Expecting value output instead of type
      • Thinking T is printed literally
      • Assuming typeof(T) always returns System.Object
      4. Identify the error in this generic method declaration:
      public void Swap<T>(T a, T b) {
          T temp = a;
          a = b;
          b = temp;
      }
      medium
      A. Cannot declare variable temp of type T
      B. Missing generic type declaration <T> after method name
      C. Method must return a value to swap
      D. Cannot swap values because parameters are passed by value

      Solution

      1. Step 1: Check parameter passing

        Parameters a and b are passed by value, so swapping inside method won't affect caller.
      2. Step 2: Confirm generic syntax correctness

        The method correctly declares <T> after method name and uses T type variables.
      3. Final Answer:

        Cannot swap values because parameters are passed by value -> Option D
      4. Quick Check:

        Value parameters can't swap caller variables [OK]
      Hint: Swap needs ref/out to affect caller variables [OK]
      Common Mistakes:
      • Thinking generic syntax is wrong
      • Assuming temp can't be type T
      • Expecting method must return swapped values
      5. You want to write a generic method FindMax that returns the maximum of two values of any type T. Which constraint should you add to T to make comparison possible?
      hard
      A. where T : IComparable<T>
      B. where T : class
      C. where T : new()
      D. where T : struct

      Solution

      1. Step 1: Understand comparison requirement

        To compare two values of type T, T must support comparison operations.
      2. Step 2: Identify suitable generic constraint

        IComparable<T> interface defines CompareTo method for comparing instances.
      3. Step 3: Review other constraints

        class restricts to reference types, new() requires parameterless constructor, struct restricts to value types but no comparison guarantee.
      4. Final Answer:

        where T : IComparable<T> -> Option A
      5. Quick Check:

        Use IComparable<T> to enable comparisons [OK]
      Hint: Use IComparable<T> constraint for comparing generics [OK]
      Common Mistakes:
      • Using class or struct constraints instead of IComparable
      • Forgetting to add any constraint
      • Assuming new() enables comparison
      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