เงื่อนข้อตกลงในการใช้บทความนี้
Event
หลายๆ ท่านที่เคยเขียนโปรแกรมกับภาษาที่ใช้ OOP Concept คงจะคุ้นเคยกับคำนี้ดีหรืออาจจะคุ้นกับคำว่า Handler มากกว่า
คอนเซปของอีเวนท์นั้นถ้าจะให้จำง่ายๆ ก็ "เมื่อ...จะ...." เช่น เมื่อฟอร์ม"โหลดเสร็จ"จะ"แสดงข้อความทักทาย"
เมื่อไหรที่ควรจะสร้าง Event
เมื่อเราต้องการจะโค๊ด Method นั้นๆ ต่อภายหลังครับ Event นั้นช่วยเพิ่มความยืดหยุ่นให้กับโค๊ดของเรา
ทำให้เราไม่จำเป็นต้องเขียนทุกอย่างไว้ตั้งแต่แรกแต่ไปเขียนเอาภายหลังได้
ตัวอย่างการสร้างและใช้งาน
ตัวอย่างนี้ผมจะให้เมื่อมีการสร้างคลาส A ให้แสดงข้อความ
ซึ่งในคลาส A ผมก็จะสร้าง Event ซึ่งวิธีสร้างก็ไม่ต่างจากการประกาศ Method ทั่วไป
Public Shared Event ReciveMessage([From] As String, Message As String)
ส่วนวิธีเรียกใช้งาน Event ที่เราสร้างนั้นก็ใช้ RaiseEvent คีย์เวิร์ดแล้วก็ใส่ค่า Arguments เหมือน Method ทั่วไปครับ
RaiseEvent ReciveMessage("System", "Class A has been construction.")
(เห็นอะไรแปลกๆ ในโค๊ดนะครับ หุหุ)
จากนั้นเราก็มาเติมเต็มโค๊ดกันตอนใช้งานจริงด้วยคีย์เวิร์ด AddHandler ซึ่งเราสามารถเติม Method เข้าไปได้มากกว่า 1 นะครับ
AddHandler A.ReciveMessage, AddressOf Reciver
AddHandler A.ReciveMessage, AddressOf EReciver
ซึ่งผลที่ได้ก็จะเป็นไปตามภาพก่อนหน้า
สังเกตุได้ว่า Event ReciveMessage และ Delegate GetMessage นั้นได้ผลเหมือนๆ กันก็เพราะว่าทั้ง 2 อย่างนี้คือสิ่งเดียวกัน
Event คีย์เวิร์ดนั้นก็คือ Delegate ซึ่งทำงานอยู่เบื้องหลัง จะเรียกว่าเป็น Sugar syntax เหมือนกับ Property ก็ว่าได้ครับ
ปล. เหมือนว่าผมจะยังไม่เคยชำแหละเรื่อง Delegate เดียวไว้ตอนหน้าผมมาแฉแล้วกันครับ
หากบทความนี้ถูกใจ เป็นประโยชน์ ขอรบกวนผู้อ่านกด [+] ด้วยนะครับ ขอบคุณครับ
[Tutorial] สอนภาษา .Net :: ตอนที่ 06 Event
Event
หลายๆ ท่านที่เคยเขียนโปรแกรมกับภาษาที่ใช้ OOP Concept คงจะคุ้นเคยกับคำนี้ดีหรืออาจจะคุ้นกับคำว่า Handler มากกว่า
คอนเซปของอีเวนท์นั้นถ้าจะให้จำง่ายๆ ก็ "เมื่อ...จะ...." เช่น เมื่อฟอร์ม"โหลดเสร็จ"จะ"แสดงข้อความทักทาย"
เมื่อไหรที่ควรจะสร้าง Event
เมื่อเราต้องการจะโค๊ด Method นั้นๆ ต่อภายหลังครับ Event นั้นช่วยเพิ่มความยืดหยุ่นให้กับโค๊ดของเรา
ทำให้เราไม่จำเป็นต้องเขียนทุกอย่างไว้ตั้งแต่แรกแต่ไปเขียนเอาภายหลังได้
ตัวอย่างการสร้างและใช้งาน
ตัวอย่างนี้ผมจะให้เมื่อมีการสร้างคลาส A ให้แสดงข้อความ
ซึ่งในคลาส A ผมก็จะสร้าง Event ซึ่งวิธีสร้างก็ไม่ต่างจากการประกาศ Method ทั่วไป
Public Shared Event ReciveMessage([From] As String, Message As String)
ส่วนวิธีเรียกใช้งาน Event ที่เราสร้างนั้นก็ใช้ RaiseEvent คีย์เวิร์ดแล้วก็ใส่ค่า Arguments เหมือน Method ทั่วไปครับ
RaiseEvent ReciveMessage("System", "Class A has been construction.")
(เห็นอะไรแปลกๆ ในโค๊ดนะครับ หุหุ)
จากนั้นเราก็มาเติมเต็มโค๊ดกันตอนใช้งานจริงด้วยคีย์เวิร์ด AddHandler ซึ่งเราสามารถเติม Method เข้าไปได้มากกว่า 1 นะครับ
AddHandler A.ReciveMessage, AddressOf Reciver
AddHandler A.ReciveMessage, AddressOf EReciver
ซึ่งผลที่ได้ก็จะเป็นไปตามภาพก่อนหน้า
สังเกตุได้ว่า Event ReciveMessage และ Delegate GetMessage นั้นได้ผลเหมือนๆ กันก็เพราะว่าทั้ง 2 อย่างนี้คือสิ่งเดียวกัน
Event คีย์เวิร์ดนั้นก็คือ Delegate ซึ่งทำงานอยู่เบื้องหลัง จะเรียกว่าเป็น Sugar syntax เหมือนกับ Property ก็ว่าได้ครับ
ปล. เหมือนว่าผมจะยังไม่เคยชำแหละเรื่อง Delegate เดียวไว้ตอนหน้าผมมาแฉแล้วกันครับ
หากบทความนี้ถูกใจ เป็นประโยชน์ ขอรบกวนผู้อ่านกด [+] ด้วยนะครับ ขอบคุณครับ