📖 Scenario: You are building a simple notification system where a class can notify others when an event happens.
🎯 Goal: Create a class with an event declaration and trigger the event to notify subscribers.
📋 What You'll Learn
Declare an event using the event keyword
Use a delegate type EventHandler for the event
Create a method to raise the event
Subscribe to the event and handle it by printing a message
💡 Why This Matters
🌍 Real World
Events are used in user interfaces, game programming, and many applications to notify parts of a program when something happens.
💼 Career
Understanding event declaration and handling is essential for C# developers working on desktop apps, web apps, and game development.
Progress0 / 4 steps
1
Create a class with an event declaration
Create a class called Notifier and declare an event called OnNotify using the delegate type EventHandler.
C Sharp (C#)
Hint
Use public event EventHandler OnNotify; inside the class.
2
Add a method to raise the event
Inside the Notifier class, add a public method called Notify that raises the OnNotify event if it has subscribers.
C Sharp (C#)
Hint
Use the null-conditional operator ?. to safely invoke the event.
3
Subscribe to the event and handle it
Create a Main method. Inside it, create an instance of Notifier called notifier. Subscribe to the OnNotify event with a lambda that prints "Event triggered!".
C Sharp (C#)
Hint
Use notifier.OnNotify += (sender, e) => Console.WriteLine("Event triggered!"); to subscribe.
4
Trigger the event and display the output
In the Main method, after subscribing, call the Notify method on notifier to trigger the event and print the message.
C Sharp (C#)
Hint
Call notifier.Notify(); to raise the event and see the message.
Practice
(1/5)
1. What keyword is used in C# to declare an event?
easy
A. trigger
B. delegate
C. event
D. notify
Solution
Step 1: Understand event declaration basics
In C#, events are declared using the event keyword followed by a delegate type.
Step 2: Identify the correct keyword
The keyword event specifically marks a member as an event, enabling subscription and notification.
Final Answer:
event -> Option C
Quick Check:
Event declaration uses 'event' keyword [OK]
Hint: Events always start with the 'event' keyword in C# [OK]
Common Mistakes:
Using 'delegate' instead of 'event' keyword
Confusing event with method declaration
Trying to declare event without a delegate type
2. Which of the following is the correct syntax to declare an event named OnClick using a delegate Action?
easy
A. public event Action OnClick;
B. public delegate event Action OnClick;
C. event public Action OnClick();
D. public Action event OnClick;
Solution
Step 1: Recall correct event declaration syntax
The correct syntax is: public event DelegateType EventName; without extra keywords or parentheses.
Step 2: Analyze each option
public event Action OnClick; matches the correct syntax exactly. Options A, B, and D misuse keyword order or add invalid syntax.
Final Answer:
public event Action OnClick; -> Option A
Quick Check:
Correct event syntax = public event Action OnClick; [OK]
Hint: Remember: 'event' comes before delegate type, no parentheses [OK]
Common Mistakes:
Adding parentheses after event name
Placing 'event' after delegate type
Combining 'delegate' and 'event' keywords incorrectly
3. What will be the output of the following code?
using System; class Program { public static event Action OnStart; static void Main() { OnStart += () => Console.WriteLine("Started"); OnStart?.Invoke(); } }
medium
A. No output
B. Compilation error
C. Runtime error
D. Started
Solution
Step 1: Understand event subscription and invocation
The event OnStart is subscribed with a lambda that prints "Started". The ?.Invoke() safely calls the event if not null.
Step 2: Predict program output
Since the event has one subscriber, invoking it prints "Started" to the console.
Final Answer:
Started -> Option D
Quick Check:
Subscribed event invoked prints 'Started' [OK]
Hint: ?.Invoke calls event only if not null, so output prints [OK]
Common Mistakes:
Assuming event is null and no output
Confusing event invocation syntax
Expecting compilation or runtime errors
4. Identify the error in the following event declaration and fix it:
public class Button { public event Action OnClick(); }
medium
A. Change 'event' to 'delegate'
B. Remove parentheses after OnClick
C. Add 'void' before event keyword
D. Add parentheses after event keyword
Solution
Step 1: Analyze event declaration syntax
Events are declared without parentheses after the event name because they are not methods but event fields.
Step 2: Correct the syntax
Removing parentheses after OnClick fixes the syntax: public event Action OnClick;
Final Answer:
Remove parentheses after OnClick -> Option B
Quick Check:
Events declared without parentheses [OK]
Hint: Events are fields, not methods--no parentheses after name [OK]
Common Mistakes:
Adding parentheses after event name
Using 'delegate' keyword instead of 'event'
Trying to declare event as a method
5. You want to declare an event DataReceived that uses a custom delegate DataHandler accepting a string parameter. Which is the correct declaration?
hard
A. public delegate void DataHandler(string data); public event DataHandler DataReceived;
B. public event void DataHandler(string data); public DataReceived event;
C. public event DataHandler(string data) DataReceived;
D. public DataHandler event DataReceived(string data);
Solution
Step 1: Declare the delegate type first
Custom delegates must be declared separately with the correct signature: public delegate void DataHandler(string data);
Step 2: Declare the event using the delegate type
The event is declared as: public event DataHandler DataReceived; without parentheses.
Final Answer:
public delegate void DataHandler(string data); public event DataHandler DataReceived; -> Option A
Quick Check:
Delegate declared first, event uses delegate type [OK]
Hint: Declare delegate first, then event with delegate type and no parentheses [OK]
Common Mistakes:
Trying to declare event with parameters directly
Mixing delegate and event keywords
Adding parentheses after event name
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.