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

EventHandler delegate pattern in C Sharp (C#) - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare an event using the EventHandler delegate.

C Sharp (C#)
public class Button {
    public event [1] Click;
}
Drag options to blanks, or click blank then click option'
AFunc<int>
BAction
CEventHandler
DEventArgs
Attempts:
3 left
💡 Hint
Common Mistakes
Using Action or Func instead of EventHandler for events.
Using EventArgs as the delegate type.
2fill in blank
medium

Complete the code to raise the Click event safely.

C Sharp (C#)
protected virtual void OnClick() {
    [1]?.Invoke(this, EventArgs.Empty);
}
Drag options to blanks, or click blank then click option'
AClick
BClickEvent
COnClick
DRaiseClick
Attempts:
3 left
💡 Hint
Common Mistakes
Calling OnClick recursively instead of invoking the event.
Using a wrong event name.
3fill in blank
hard

Fix the error in the event subscription code.

C Sharp (C#)
Button btn = new Button();
btn.Click += [1];

void Btn_Click(object sender, EventArgs e) {
    Console.WriteLine("Button clicked");
}
Drag options to blanks, or click blank then click option'
ABtn_Click()
BBtn_Click(sender, e)
CBtn_Click(object, EventArgs)
DBtn_Click
Attempts:
3 left
💡 Hint
Common Mistakes
Adding parentheses when subscribing to the event.
Trying to pass parameters in the subscription.
4fill in blank
hard

Fill both blanks to declare and raise a custom event using EventHandler.

C Sharp (C#)
public class Alarm {
    public event [1] AlarmRaised;

    public void RaiseAlarm() {
        AlarmRaised[2].Invoke(this, EventArgs.Empty);
    }
}
Drag options to blanks, or click blank then click option'
AEventHandler
BEventHandler<TEventArgs>
CClick
D?
Attempts:
3 left
💡 Hint
Common Mistakes
Using EventHandler without a custom EventArgs class.
Omitting the null check operator when raising the event.
5fill in blank
hard

Fill all three blanks to create a dictionary of event handlers and invoke one safely.

C Sharp (C#)
var handlers = new Dictionary<string, [1]>();
handlers["start"] = (sender, e) => Console.WriteLine("Started");

if (handlers.TryGetValue("start", out var handler)) {
    handler[2].Invoke([3], EventArgs.Empty);
}
Drag options to blanks, or click blank then click option'
AEventHandler
B?
Cthis
Dnull
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect delegate types in the dictionary.
Not using the null-conditional operator when invoking.

Practice

(1/5)
1. What is the main purpose of the EventHandler delegate in C#?
easy
A. To format strings for output
B. To create a new thread for event processing
C. To store data in a dictionary
D. To define a method signature for handling events

Solution

  1. Step 1: Understand what a delegate does

    A delegate defines a method signature that can be used to call methods indirectly.
  2. Step 2: Connect delegate to event handling

    The EventHandler delegate specifically defines the signature for methods that handle events.
  3. Final Answer:

    To define a method signature for handling events -> Option D
  4. Quick Check:

    EventHandler defines event method signature = D [OK]
Hint: EventHandler defines how event methods look [OK]
Common Mistakes:
  • Confusing EventHandler with threading
  • Thinking EventHandler stores data
  • Mixing EventHandler with string formatting
2. Which of the following is the correct syntax to declare an event using the EventHandler delegate in a class?
easy
A. public event EventHandler MyEvent;
B. public EventHandler event MyEvent;
C. event public EventHandler MyEvent();
D. public void event EventHandler MyEvent;

Solution

  1. Step 1: Recall event declaration syntax

    Events are declared with the keyword event followed by the delegate type and event name.
  2. Step 2: Match correct syntax

    public event EventHandler MyEvent; matches the correct pattern.
  3. Final Answer:

    public event EventHandler MyEvent; -> Option A
  4. Quick Check:

    Event declaration = event + delegate + name [OK]
Hint: Remember: event keyword before delegate type [OK]
Common Mistakes:
  • Placing 'event' after delegate type
  • Adding parentheses after event name
  • Using void instead of event keyword
3. What will be the output of the following code?
using System;
class Program {
    public static event EventHandler OnAction;
    static void Main() {
        OnAction += (sender, e) => Console.WriteLine("Action happened!");
        OnAction?.Invoke(null, EventArgs.Empty);
    }
}
medium
A. Action happened!
B. No output
C. NullReferenceException
D. Compilation error

Solution

  1. Step 1: Understand event subscription

    The lambda expression subscribes a method that prints "Action happened!" to the event OnAction.
  2. Step 2: Invoke the event safely

    The event is invoked with ?.Invoke, so it calls the subscribed method, printing the message.
  3. Final Answer:

    Action happened! -> Option A
  4. Quick Check:

    Subscribed event invoked prints message = A [OK]
Hint: ?.Invoke calls event only if not null [OK]
Common Mistakes:
  • Forgetting to subscribe to the event
  • Not using null-conditional operator causing errors
  • Expecting no output without invocation
4. Identify the error in this event usage code:
public class Button {
    public event EventHandler Click;
    public void SimulateClick() {
        Click(null, EventArgs.Empty);
    }
}
medium
A. EventHandler delegate cannot use EventArgs.Empty
B. Event must be invoked with a sender object, not null
C. Event should be checked for null before invoking
D. SimulateClick method must be static

Solution

  1. Step 1: Check event invocation safety

    Events can be null if no subscribers exist, so invoking without null check causes runtime error.
  2. Step 2: Correct usage

    Use Click?.Invoke(this, EventArgs.Empty); to safely invoke the event.
  3. Final Answer:

    Event should be checked for null before invoking -> Option C
  4. Quick Check:

    Always check event for null before invoke [OK]
Hint: Use ?.Invoke to avoid null errors [OK]
Common Mistakes:
  • Invoking event directly without null check
  • Assuming sender cannot be null
  • Making event handler static unnecessarily
5. You want to create a custom event that sends a string message to subscribers. Which is the best way to define the event and its arguments using the EventHandler pattern?
hard
A. Declare event as EventHandler and send string directly as sender parameter
B. Create a class inheriting from EventArgs with a string property, then declare event as EventHandler<YourArgs>
C. Use Action<string> delegate instead of EventHandler for the event
D. Declare event as EventHandler and ignore sending any data

Solution

  1. Step 1: Understand custom event data

    To send extra info, create a class derived from EventArgs with needed properties.
  2. Step 2: Use generic EventHandler with custom args

    Declare event as EventHandler<YourArgs> to pass the custom data safely.
  3. Final Answer:

    Create a class inheriting from EventArgs with a string property, then declare event as EventHandler<YourArgs> -> Option B
  4. Quick Check:

    Custom EventArgs + EventHandler<T> = B [OK]
Hint: Use EventHandler<T> with custom EventArgs for extra data [OK]
Common Mistakes:
  • Passing data via sender parameter
  • Using Action delegate instead of EventHandler
  • Ignoring event data when needed
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