ตัวแทนและเหตุการณ์
เรียนรู้ว่าตัวแทนและเหตุการณ์ช่วยให้เกิดการสื่อสารระหว่างออบเจ็กต์ใน C# ได้อย่างไร
ตัวแทนและเหตุการณ์ เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 5 จากทั้งหมด 6 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 6 บทเรียน
delegate และเหตุการณ์
delegate และเหตุการณ์
ยินดีต้อนรับสู่บทเรียนถัดไป! ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับ delegate และเหตุการณ์ใน C# จุดประสงค์ของสิ่งเหล่านี้ และวิธีที่สิ่งเหล่านี้ช่วยให้เขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์ได้ มาเริ่มกันเลย!

delegate คืออะไร
delegate คืออะไร
delegate เป็นชนิดข้อมูลที่แทนการอ้างอิงไปยังเมธอด ช่วยให้ส่งเมธอดเป็นพารามิเตอร์และเรียกใช้แบบไดนามิกได้
ประเด็นสำคัญ: delegate มีความสำคัญต่อการนำเหตุการณ์และฟังก์ชันเรียกกลับมาใช้ใน C#
การกำหนดและใช้ delegate
การกำหนดและใช้ delegate
เมื่อต้องการกำหนด delegate ให้ใช้คีย์เวิร์ด delegate ตัวอย่าง:
using System;
class Program {
// Define a delegate
public delegate void MessageDelegate(string message);
static void DisplayMessage(string message) {
Console.WriteLine(message);
}
static void Main() {
// Create a delegate instance
MessageDelegate msg = DisplayMessage;
// Invoke the delegate
msg("Hello, Delegates!");
}
}
delegate แบบหลายผู้รับ
delegate แบบหลายผู้รับ
delegate เดียวสามารถชี้ไปยังหลายเมธอดได้ และเมธอดทั้งหมดจะถูกเรียกตามลำดับ ตัวอย่าง:
เคล็ดลับ: ใช้ delegate แบบหลายผู้รับในกรณีที่จำเป็นต้องดำเนินการหลายอย่าง
using System;
class Program {
public delegate void MessageDelegate(string message);
static void ShowMessage(string message) {
Console.WriteLine("Message: " + message);
}
static void LogMessage(string message) {
Console.WriteLine("Log: " + message);
}
static void Main() {
MessageDelegate msg = ShowMessage;
msg += LogMessage; // Add another method
msg("Hello, Multicast Delegates!"); // Both methods are invoked
}
}
เหตุการณ์คืออะไร
เหตุการณ์คืออะไร
เหตุการณ์เป็นกลไกที่ช่วยให้คลาสแจ้งคลาสหรือออบเจ็กต์อื่นเมื่อมีสิ่งที่สนใจเกิดขึ้น เหตุการณ์สร้างขึ้นบนพื้นฐานของ delegate
ประเด็นสำคัญ: เหตุการณ์ช่วยให้ผู้เผยแพร่และผู้สมัครรับข้อมูลเชื่อมโยงกันอย่างหลวม ๆ ในการเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์
การกำหนดและใช้เหตุการณ์
การกำหนดและใช้เหตุการณ์
เมื่อต้องการกำหนดเหตุการณ์ ให้ใช้คีย์เวิร์ด event ร่วมกับชนิด delegate ตัวอย่าง:
ประเด็นสำคัญ: เหตุการณ์ช่วยให้คุณสร้างระบบแบบตอบสนองและแบบขับเคลื่อนด้วยเหตุการณ์ได้
using System;
class Publisher {
public delegate void NotifyDelegate(string message);
public event NotifyDelegate Notify; // Define an event
public void RaiseEvent(string message) {
Notify?.Invoke(message); // Invoke the event
}
}
class Subscriber {
public void OnNotify(string message) {
Console.WriteLine("Subscriber received: " + message);
}
}
class Program {
static void Main() {
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.Notify += sub.OnNotify; // Subscribe to the event
pub.RaiseEvent("Hello, Events!"); // Raise the event
}
}
การยกเลิกการสมัครรับเหตุการณ์
การยกเลิกการสมัครรับเหตุการณ์
ผู้สมัครรับข้อมูลสามารถยกเลิกการสมัครรับเหตุการณ์โดยใช้ตัวดำเนินการ -=` ตัวอย่าง:
เคล็ดลับ: ยกเลิกการสมัครรับเหตุการณ์เสมอเพื่อหลีกเลี่ยงหน่วยความจำรั่ว
using System;
class Publisher {
public delegate void NotifyDelegate(string message);
public event NotifyDelegate Notify;
public void RaiseEvent(string message) {
Notify?.Invoke(message);
}
}
class Subscriber {
public void OnNotify(string message) {
Console.WriteLine("Subscriber received: " + message);
}
}
class Program {
static void Main() {
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.Notify += sub.OnNotify; // Subscribe
pub.RaiseEvent("First Message");
pub.Notify -= sub.OnNotify; // Unsubscribe
pub.RaiseEvent("Second Message"); // No output, as subscriber is removed
}
}
โจทย์ฝึกปฏิบัติ
โจทย์ฝึกปฏิบัติ
สร้าง delegate CalculationDelegate สำหรับการดำเนินการทางคณิตศาสตร์ และสร้างเหตุการณ์ OnCalculate เขียนโปรแกรมที่ส่งสัญญาณเหตุการณ์และดำเนินการคำนวณ ตัวอย่าง:
using System;
class Calculator {
public delegate void CalculationDelegate(double result);
public event CalculationDelegate OnCalculate;
public void Add(double a, double b) {
double result = a + b;
OnCalculate?.Invoke(result);
}
}
class Program {
static void Main() {
Calculator calc = new Calculator();
// Subscribe to the event
calc.OnCalculate += result => Console.WriteLine("Result: " + result);
calc.Add(5, 3); // Outputs: Result: 8
}
}
เก่งมาก
เก่งมาก
ขอแสดงความยินดี! คุณได้เรียนรู้วิธีใช้ delegate และเหตุการณ์เพื่อสร้างโปรแกรมแบบไดนามิกและแบบขับเคลื่อนด้วยเหตุการณ์แล้ว ในบทเรียนถัดไป เราจะเรียนรู้การทำงานกับคอลเลกชัน เช่น รายการ พจนานุกรม และคิว มาเขียนโค้ดกันต่อเลย!

คำถามที่พบบ่อย
บทเรียน “ตัวแทนและเหตุการณ์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวแทนและเหตุการณ์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 6 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวแทนและเหตุการณ์”
เรียนรู้ว่าตัวแทนและเหตุการณ์ช่วยให้เกิดการสื่อสารระหว่างออบเจ็กต์ใน C# ได้อย่างไร คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 5 จากทั้งหมด 6 บทเรียน
บทเรียน “ตัวแทนและเหตุการณ์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- บทนำสู่อินเทอร์เฟซ
- คลาสนามธรรม
- สมาชิกและเมธอดแบบสแตติก
- สำรวจชนิดแจกแจงและโครงสร้าง
- ตัวแทนและเหตุการณ์
- การทำงานกับคอลเลกชัน: รายการ พจนานุกรม และคิว