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

Func delegate type in C Sharp (C#) - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Func delegate in C#?
A Func delegate is a predefined delegate type in C# that represents a method that returns a value and can take zero or more input parameters.
Click to reveal answer
beginner
How many parameters can a Func delegate have?
A Func delegate can have from zero up to 16 input parameters, with the last generic type parameter always representing the return type.
Click to reveal answer
intermediate
Explain the generic type parameters in Func<T1, T2, TResult>.
In Func<T1, T2, TResult>, T1 and T2 are input parameter types, and TResult is the return type of the method the delegate points to.
Click to reveal answer
beginner
What is the difference between Action and Func delegates?
Action delegates represent methods that return void (no value), while Func delegates represent methods that return a value.
Click to reveal answer
beginner
Show a simple example of a Func<int, int, int> delegate usage.
Example:
Func<int, int, int> add = (x, y) => x + y;
int result = add(3, 4); // result is 7
Click to reveal answer
What does the last generic type parameter in a Func delegate represent?
AThe return type
BThe first input parameter
CThe number of parameters
DThe delegate name
Which of the following is a valid Func delegate declaration?
AFunc&lt;int, string, bool&gt;
BFunc&lt;void, int&gt;
CFunc&lt;void&gt;
DFunc&lt;int, int, void&gt;
What is the maximum number of input parameters a Func delegate can have?
A8
B10
CNo limit
D16
Which delegate type should you use if your method does not return a value?
AFunc
BAction
CPredicate
DEventHandler
What will this code output?
Func<int, int> square = x => x * x;
Console.WriteLine(square(5));
A5
B10
C25
DError
Describe what a Func delegate is and how it differs from an Action delegate.
Think about whether the method returns a value or not.
You got /3 concepts.
    Explain how you would declare and use a Func delegate that takes two integers and returns their sum.
    Use <code>Func&lt;int, int, int&gt;</code> and a simple lambda.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the Func delegate type in C#?
      easy
      A. To store methods that return a value
      B. To store methods that do not return a value
      C. To create variables of any data type
      D. To define classes

      Solution

      1. Step 1: Understand what Func represents

        Func is a delegate type designed to hold references to methods that return a value.
      2. Step 2: Differentiate from other delegates

        Unlike Action, which stores methods without return values, Func always returns a value.
      3. Final Answer:

        To store methods that return a value -> Option A
      4. Quick Check:

        Func stores methods with return values = C [OK]
      Hint: Remember: Func always returns a value, Action does not [OK]
      Common Mistakes:
      • Confusing Func with Action delegate
      • Thinking Func can store void methods
      • Assuming Func defines classes
      2. Which of the following is the correct syntax to declare a Func delegate that takes two integers and returns an integer?
      easy
      A. Func add = (x, y) => x + y;
      B. Func add = (x, y) => x + y;
      C. Func<int> add = (x, y) => x + y;
      D. Func add = (x, y) => x + y;

      Solution

      1. Step 1: Understand Func generic parameters

        The last type parameter is the return type; previous ones are input types. For two integers input and one integer output, use Func.
      2. Step 2: Check lambda expression matches parameters

        The lambda (x, y) => x + y takes two inputs and returns their sum, matching the delegate.
      3. Final Answer:

        Func<int, int, int> add = (x, y) => x + y; -> Option B
      4. Quick Check:

        Two inputs + one output = Func<int, int, int> [OK]
      Hint: Count inputs, last type is output in Func<> [OK]
      Common Mistakes:
      • Using wrong number of generic parameters
      • Mixing input and output types order
      • Incorrect lambda parameter count
      3. What is the output of the following code?
      Func<int, int, int> multiply = (a, b) => a * b;
      int result = multiply(3, 4);
      Console.WriteLine(result);
      medium
      A. 12
      B. 7
      C. 34
      D. Error

      Solution

      1. Step 1: Understand the Func delegate and lambda

        The delegate multiply takes two integers and returns their product.
      2. Step 2: Calculate the result of multiply(3, 4)

        3 multiplied by 4 equals 12.
      3. Final Answer:

        12 -> Option A
      4. Quick Check:

        3 * 4 = 12 [OK]
      Hint: Multiply inputs as lambda defines [OK]
      Common Mistakes:
      • Adding instead of multiplying
      • Concatenating numbers as strings
      • Expecting syntax error
      4. Identify the error in this code snippet:
      Func<int, int> square = x => x * x;
      int result = square(5, 2);
      Console.WriteLine(result);
      medium
      A. Syntax error in lambda expression
      B. Missing return statement in lambda
      C. Incorrect delegate type for lambda
      D. Too many arguments passed to the Func delegate

      Solution

      1. Step 1: Check Func delegate signature

        Func<int, int> expects one integer input and returns an integer.
      2. Step 2: Check method call arguments

        The call square(5, 2) passes two arguments, but the delegate expects only one.
      3. Final Answer:

        Too many arguments passed to the Func delegate -> Option D
      4. Quick Check:

        One input expected, two given = error [OK]
      Hint: Match argument count to Func input count [OK]
      Common Mistakes:
      • Passing wrong number of arguments
      • Confusing input and output types
      • Assuming lambda needs explicit return
      5. You want to create a Func delegate that takes a string and returns its length only if the string is not null or empty; otherwise, it returns zero. Which of the following implementations correctly achieves this?
      hard
      A. Func lengthFunc = s => { if (s == null) return 0; else return s.Length; };
      B. Func lengthFunc = s => s.Length;
      C. Func lengthFunc = s => string.IsNullOrEmpty(s) ? 0 : s.Length;
      D. Func lengthFunc = s => s == "" ? s.Length : 0;

      Solution

      1. Step 1: Understand the requirement

        The function must return 0 if the string is null or empty, else return its length.
      2. Step 2: Analyze each option

        Func lengthFunc = s => string.IsNullOrEmpty(s) ? 0 : s.Length; uses string.IsNullOrEmpty to check both conditions and returns 0 or length accordingly, which is correct. Func lengthFunc = s => s.Length; does not check for null or empty and may throw an error. Func lengthFunc = s => { if (s == null) return 0; else return s.Length; }; checks only for null, not empty. Func lengthFunc = s => s == "" ? s.Length : 0; returns length only if string is empty, which is opposite.
      3. Final Answer:

        Func<string, int> lengthFunc = s => string.IsNullOrEmpty(s) ? 0 : s.Length; -> Option C
      4. Quick Check:

        Check null or empty with IsNullOrEmpty = Func lengthFunc = s => string.IsNullOrEmpty(s) ? 0 : s.Length; [OK]
      Hint: Use string.IsNullOrEmpty to check safely [OK]
      Common Mistakes:
      • Not checking empty string
      • Only checking null but not empty
      • Returning wrong value for empty string
      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