หัดทำ delegate ภาค2 ตอน Multicasting
posted on 13 Jun 2008 21:08 by xnanoob in Tutorials
ดีค่า จากก่อนหน้านี้ได้หัดทำ delegate กันไป
มีจุดที่น่าสนใจก็คือว่า ถ้า method ที่เป็นตัวแทนนั้นเป็นแบบ static method เราก็สามารถถ้าถึง method นั้นใน delegate ได้เลย แต่หาก method ในคลาสนั้นเป็นแบบธรรมดาคุณก็ต้องทำการสร้าง new object มาใช้เหมือนปกติในจังหวะ delegate
จากการที่เราสร้าง delegate ขี้นมาเป็นตัวแทนของ เราแล้วให้มันไปทำงานต่างๆ นั้น ตัวแทนของเราสามารถทำงานได้มากกว่า 1 อย่าง หมายถึงว่าสามารถซ่อนหรือปกปิด method ได้มากหนึ่ง method เราจะเรียกว่า multicasting
หรือพูดแบบบ้านๆ ก็แบบว่าพ่อเราใช้ให้ไปจ่ายค่าไฟแล้วไปจ่ายค่าโทรศัพท์ด้วย พ่อให้เราเป็นตัวแทนอะไรประมาณเนี้ย
ซึ่งเราสามารถเพิ่ม method เข้าไปใน delegate ได้ โดยใช้สัญลักษณ์
| += |
และในทางกลับกันจะใช้สัญลักษณ์
| -= |
//ประกาศ delegate
// รับค่าเป็น string ไม่มีการ return ค่า
public delegate void testD(string a);
//สร้าง method testM รับค่าเป็น string return ไม่มีการ return ค่า
public void testM(string a) {
Console.WriteLine(string.Concat(a, " call TestM"));
}
//สร้าง method testM2 รับค่าเป็น string return ไม่มีการ return ค่า
public void testM2(string a)
{
Console.WriteLine(string.Concat(a," call TestM2"));
}
}
จังหวะ ผูก method ใน delegate
d += new test.testD(o.testM2);
หรือแบบนี้ให้ code เราดูสวยขึ้น
d += new test.testD(o.testM);
d += new test.testD(o.testM2);
เรียกใช้เหมือนปกติ

ถ้าไงขอตัวก่อนนะค่ะ บายค่า
ปล. เอกสารอ้างอิง http://www.akadia.com/services/dotnet_delegates_and_events.html#Multicasting
ปล.2 ดูแบบมีสีได้ที่ http://www.xnanoob.com/forum/index.php?topic=18.0
edit @ 13 Jun 2008 23:55:06 by xnanoob








#1 By book on 2008-06-14 01:15