ตัวแทนดำเนินการ Delegates

posted on 13 Jun 2008 07:42 by xnanoob  in Tutorials
 
 
ดีค่า  วันนี้ว่าจะมาหัดเรื่องของ delegate  นะค่ะ ความจริงเมื่อวานก็ลองไปอ่านๆ ดูจากหลายๆ เว็บๆ ความหมายที่พอจะอธิบายให้ตัวเราเองสามารถเข้าใจได้มากที่สุด ก็ไปเจอมาประโยคหนึ่ง เค้าก็จะบอกว่า delegate เนี้ยเป็นการปกปิดข้อมูลในส่วนของการที่จะไปเรียก method  คือปกปิดว่าตอนเนี้ย method ที่คุณเรียกใช้อยู่นะ คือ method อะไร โดยใช้ตัวแทนเป็นคนทำงาน

ยกตัวอย่างแบบบ้านๆ ก็คล้ายๆ นอมีนี อะค่ะ ที่ทำการแทนบุคคลใดบุคคลหนึ่งได้ หรือแบบวันก่อนดูข่าวเกี่ยวกับมีคนเอาเงินสองล้านไปวางไว้ที่ศาล ถามตามสามัญสำนึกใครกันแน่ที่จะเอาเิงินขนาดสองล้านไปวางลืมไว้  เจ้าของเงินคนอาจจะไม่ใช่คนที่เอาเงินมาวาง แต่อาจะใ้ช้ตัวแทน หรือจ้างนอมีนีมาทำการแทน เพราะดููจากข่าว ถ้าทนายเป็นคนทำจะโดนยึดพวกใบอนุญาติด้วย คงไม่โง่อะไรขนาดนั้น  เพราะฉะนั้นเนี้ยแระ ที่เรียกว่า คนดำเนินการแทน หรือตัวแทน หรือ delegates

แต่การที่จะบอกว่าใครไปทำอะไรได้นั้น ก็ต้องกำหนดชนิดของตัวแทนและชนิดของสิ่งที่จะให้ทำแทน  โดยจะทำการอ้างผ่าน signature ของ method และ delegate นั้นเอง

Quote
Using a delegate allows the programmer to encapsulate a reference to a method inside a delegate object.

ซึ่งมันจะเป็นการประกาศ
Code:
//ประกาศ delegate
public delegate void testD(string a);
แบบเนี้ยก็จะอ่านว่า ชั้นจะมีตัวแทนชื่อ testD โดยทำงานแทนใน method ที่มีการรับค่าเป็น string และไม่มีการคืนค่า


Code:
class test {
        //ประกาศ delegate
        // รับค่าเป็น string ไม่มีการ return ค่า
        public delegate void testD(string a);

        //สร้าง method testM รับค่าเป็น string return ไม่มีการ return ค่า
        public void testM(string a) {
            Console.WriteLine(a);
        }
    }

จังหวะการใช้งาน

Code:
// สร้าง object test
test o = new test();
// ประกาศ delegate d เป็นตัวแทนของ testD
// โดยทำหน้าที่แทน method testM
test.testD d = new test.testD(o.testM);


การใช้งานตัวแทน d ซ่อนหรือปกปิดการเรียก method testM

Code:
d("hello world");

อะไรประมาณนี้ นะค่ะ

 

 

จบแระค่า บายค่ะ งุงิ

อ่านแบบมีสีได้ ที่นี้ http://www.xnanoob.com/forum/index.php?topic=15.0

apartment for rent

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry