Delegates
😢 ปัญหา
เวลาที่เราเขียนโค้ด แล้วอยากเก็บข้อมูลต่างๆ เช่น ตัวเลข ตัวอักษร อะไรพวกนี้เราก็สามารถสร้างตัวแปรมาเก็บไว้ได้ง่ายๆใช่ป่ะ ตามโค้ดด้านล่างเลย
int a = 123;
string b = "saladpuk";แต่ถ้าเราอยากเก็บ Method ไว้ในตัวแปรบ้างล่ะ เราจะทำยังไง?
😄 วิธีแก้ปัญหา
ในภาษา C# เรามีตัวที่ชื่อว่า Delegate เอาไว้แก้ปัญหานี้อยู่ ซึ่งการทำงานของมันอธิบายไปตรงนี้เดี๋ยวจะ งง เปล่าๆ ลองไปดูโค้ดจะเข้าใจง่ายกว่า
สมมุติว่าเรามี method อยู่ตัวนึง ตามโค้ดด้านล่าง
static void Saladpuk()
{
Console.WriteLine("Hello world");
}แล้วเราอยากจะเก็บมันไว้ในตัวแปรซักตัว สิ่งที่เราต้องทำก็คือ สร้าง delegate ขึ้นมาก่อน โดยการสร้างเจ้าตัวนี้ เราจะต้องบอกว่า method ของเรามี Signature เป็นแบบไหน ซึ่งจาก โค้ดด้านบน เราจะเห็นว่า Signature ของมันคือ
มันมี return type เป็น void
มันไม่รับ parameter อะไรเลย
จากที่ว่ามาเราก็จะสร้างเจ้า delegate ขึ้นมาก่อน ตามนี้
ตรง YOUR_DELEGATE_NAME คือชื่อของ delegate ที่เราสร้างขึ้นมา จะเป็นชื่ออะไรก็ได้ ในตัวอย่างของใช้ชื่อนี้เลยละกันขี้เกียจแก้ละ
ถัดมาเราก็จะสร้างตัวแปร เพื่อเอามาเก็บเจ้า method Saladpuk() ของเรา ดังนั้นก็จะออกมาราวๆนี้
สุดท้ายเราก็จะลองเรียกใช้งานมันดู
ผลลัพท์ Hello world
📝 Source Code
🎯 บทสรุป
เจ้าตัวนี้ในปัจจุบันเราไม่ได้ไปยุ่งกับมันเท่าไหร่แล้ว แต่เราต้องเข้าใจมันนิดหน่อย เพราะในเรื่องอื่นๆของ C# ได้ใช้หลักเจ้าตัวนี้เยอะอยู่ เช่นพวก Action, Func, Lambda ในบทถัดไปนั่นเอง
Last updated
Was this helpful?