0Pricing
C# Academy · บทเรียน

ตัวแทนและเหตุการณ์

เรียนรู้ว่าตัวแทนและเหตุการณ์ช่วยให้เกิดการสื่อสารระหว่างออบเจ็กต์ใน C# ได้อย่างไร

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

delegate และเหตุการณ์

delegate และเหตุการณ์

ยินดีต้อนรับสู่บทเรียนถัดไป! ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับ delegate และเหตุการณ์ใน C# จุดประสงค์ของสิ่งเหล่านี้ และวิธีที่สิ่งเหล่านี้ช่วยให้เขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์ได้ มาเริ่มกันเลย!

ตัวแทนและเหตุการณ์ — ภาพประกอบ 1

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 และเหตุการณ์เพื่อสร้างโปรแกรมแบบไดนามิกและแบบขับเคลื่อนด้วยเหตุการณ์แล้ว ในบทเรียนถัดไป เราจะเรียนรู้การทำงานกับคอลเลกชัน เช่น รายการ พจนานุกรม และคิว มาเขียนโค้ดกันต่อเลย!

ตัวแทนและเหตุการณ์ — ภาพประกอบ 10

คำถามที่พบบ่อย

บทเรียน “ตัวแทนและเหตุการณ์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตัวแทนและเหตุการณ์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. บทนำสู่อินเทอร์เฟซ
  2. คลาสนามธรรม
  3. สมาชิกและเมธอดแบบสแตติก
  4. สำรวจชนิดแจกแจงและโครงสร้าง
  5. ตัวแทนและเหตุการณ์
  6. การทำงานกับคอลเลกชัน: รายการ พจนานุกรม และคิว
← กลับไปที่ C# Academy