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

Predicate delegate type in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Predicate Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Predicate delegate example?
Consider the following C# code using a Predicate delegate. What will be printed to the console?
C Sharp (C#)
using System;

class Program {
    static void Main() {
        Predicate<int> isEven = x => x % 2 == 0;
        Console.WriteLine(isEven(10));
        Console.WriteLine(isEven(7));
    }
}
ATrue\nFalse
BFalse\nTrue
C10\n7
DCompilation error
Attempts:
2 left
💡 Hint
Predicate returns a boolean indicating if the condition is met.
❓ Predict Output
intermediate
2:00remaining
What does this Predicate delegate filter produce?
Given the following code, what is the output of the filtered list printed?
C Sharp (C#)
using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<int> numbers = new() {1, 2, 3, 4, 5};
        Predicate<int> isGreaterThanThree = n => n > 3;
        List<int> filtered = numbers.FindAll(isGreaterThanThree);
        foreach (var num in filtered) {
            Console.Write(num + " ");
        }
    }
}
A3 4 5
B1 2 3
C4 5
DCompilation error
Attempts:
2 left
💡 Hint
Predicate filters elements where the condition is true.
❓ Predict Output
advanced
2:00remaining
What is the output of this Predicate delegate with method group?
Analyze the code below. What will be printed when running this program?
C Sharp (C#)
using System;

class Program {
    static bool IsPositive(int x) => x > 0;

    static void Main() {
        Predicate<int> check = IsPositive;
        Console.WriteLine(check(-1));
        Console.WriteLine(check(0));
        Console.WriteLine(check(5));
    }
}
ATrue\nFalse\nTrue
BFalse\nFalse\nTrue
CFalse\nTrue\nTrue
DCompilation error
Attempts:
2 left
💡 Hint
The method returns true only if the number is greater than zero.
❓ Predict Output
advanced
2:00remaining
What error does this Predicate delegate code produce?
What error will occur when compiling or running this code?
C Sharp (C#)
using System;

class Program {
    static void Main() {
        Predicate<string> isLong = s => s.Length > 5;
        Console.WriteLine(isLong(null));
    }
}
ASystem.NullReferenceException at runtime
BCompilation error: cannot convert lambda
COutput: False
DOutput: True
Attempts:
2 left
💡 Hint
Calling Length on null causes an error.
🧠 Conceptual
expert
2:00remaining
How many items are in the resulting list after applying this Predicate?
Given the code below, how many integers remain in the list after filtering with the Predicate?
C Sharp (C#)
using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<int> nums = new() { -2, -1, 0, 1, 2, 3 };
        Predicate<int> pred = x => x * x > 1;
        List<int> result = nums.FindAll(pred);
        Console.WriteLine(result.Count);
    }
}
A6
B4
C5
D3
Attempts:
2 left
💡 Hint
Check which numbers squared are greater than 1.

Practice

(1/5)
1.

What does a Predicate<T> delegate represent in C#?

easy
A. A method that takes a parameter of type T and returns a boolean indicating a condition.
B. A method that takes no parameters and returns void.
C. A method that takes two parameters and returns an integer.
D. A method that returns a string representation of an object.

Solution

  1. Step 1: Understand the Predicate delegate signature

    A Predicate delegate always takes one parameter of type T and returns a boolean value.
  2. Step 2: Match the description to the options

    A method that takes a parameter of type T and returns a boolean indicating a condition correctly describes this signature as a method taking T and returning bool.
  3. Final Answer:

    A method that takes a parameter of type T and returns a boolean indicating a condition. -> Option A
  4. Quick Check:

    Predicate<T> = method(T) returns bool [OK]
Hint: Predicate always returns true or false for a given input [OK]
Common Mistakes:
  • Confusing Predicate with Action or Func delegates
  • Thinking Predicate returns void or other types
  • Assuming Predicate takes multiple parameters
2.

Which of the following is the correct syntax to declare a Predicate delegate for integers?

?
easy
A. Predicate<int> isPositive = x => x > 0;
B. Predicate<int> isPositive = (int x) => { return x; };
C. Predicate<int> isPositive = x => x + 1;
D. Predicate<int> isPositive = () => true;

Solution

  1. Step 1: Check the lambda expression return type

    Predicate<int> expects a method returning bool. Predicate<int> isPositive = x => x > 0; returns x > 0, which is bool.
  2. Step 2: Verify parameter and return correctness

    Predicate<int> isPositive = (int x) => { return x; }; returns x (int), not bool. Predicate<int> isPositive = x => x + 1; returns x + 1 (int), not bool. Predicate<int> isPositive = () => true; has no parameter but Predicate requires one.
  3. Final Answer:

    Predicate<int> isPositive = x => x > 0; -> Option A
  4. Quick Check:

    Predicate<int> = int input => bool output [OK]
Hint: Predicate must return bool, not int or void [OK]
Common Mistakes:
  • Returning int instead of bool
  • Missing parameter in lambda
  • Using incorrect lambda syntax
3.

What will be the output of the following C# code?

using System;
class Program {
    static void Main() {
        Predicate<string> isLong = s => s.Length > 5;
        string[] words = {"apple", "banana", "pear"};
        int count = 0;
        foreach (var word in words) {
            if (isLong(word)) count++;
        }
        Console.WriteLine(count);
    }
}
medium
A. 3
B. 2
C. 1
D. 0

Solution

  1. Step 1: Understand the Predicate condition

    The predicate checks if the string length is greater than 5.
  2. Step 2: Count words with length > 5

    "apple" length 5 (false), "banana" length 6 (true), "pear" length 4 (false). Only "banana" passes.
  3. Final Answer:

    2 -> Option B
  4. Quick Check:

    Words with length > 5 are "banana" only, count = 1 [Incorrect]
Hint: Count items where predicate returns true [OK]
Common Mistakes:
  • Counting words with length equal to 5
  • Misreading predicate condition
  • Assuming all words pass the test
4.

Identify the error in this code using a Predicate delegate:

Predicate<int> isEven = n => n % 2 == 0;
int[] numbers = {1, 2, 3, 4};
int evenCount = 0;
foreach (int num in numbers) {
    if (isEven) evenCount++;
}
Console.WriteLine(evenCount);
medium
A. The Predicate delegate is not assigned correctly.
B. The foreach loop variable should be declared as var.
C. The if condition should call the delegate with an argument.
D. The Console.WriteLine statement is missing parentheses.

Solution

  1. Step 1: Check how Predicate is used in if condition

    The code uses if (isEven) which checks the delegate itself, not its result.
  2. Step 2: Correct usage requires calling the delegate with an argument

    It should be if (isEven(num)) to evaluate the condition for each number.
  3. Final Answer:

    The if condition should call the delegate with an argument. -> Option C
  4. Quick Check:

    Call Predicate with input: isEven(num) [OK]
Hint: Always call Predicate with an argument inside if [OK]
Common Mistakes:
  • Using delegate name without parentheses
  • Confusing delegate variable with method call
  • Ignoring parameter requirement
5.

You want to filter a list of integers to keep only positive even numbers using a Predicate delegate. Which of the following implementations correctly combines these conditions?

hard
A. Predicate<int> isPositiveEven = x => x % 2 == 0;
B. Predicate<int> isPositiveEven = x => x > 0 || x % 2 == 0;
C. Predicate<int> isPositiveEven = x => x < 0 && x % 2 == 0;
D. Predicate<int> isPositiveEven = x => x > 0 && x % 2 == 0;

Solution

  1. Step 1: Understand the filtering requirement

    We want numbers that are both positive and even.
  2. Step 2: Analyze each option's condition

    Predicate<int> isPositiveEven = x => x > 0 && x % 2 == 0; uses AND (&&) to require both conditions true. Predicate<int> isPositiveEven = x => x > 0 || x % 2 == 0; uses OR (||), allowing positives or evens, which is incorrect. Predicate<int> isPositiveEven = x => x < 0 && x % 2 == 0; checks for negative and even, wrong sign. Predicate<int> isPositiveEven = x => x % 2 == 0; checks only even, missing positivity.
  3. Final Answer:

    Predicate<int> isPositiveEven = x => x > 0 && x % 2 == 0; -> Option D
  4. Quick Check:

    Use AND to combine conditions for filtering [OK]
Hint: Use && to combine multiple conditions in Predicate [OK]
Common Mistakes:
  • Using || instead of && for combined conditions
  • Checking wrong sign for positivity
  • Ignoring one of the required conditions
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