Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วิธีการประกาศและสร้าง Delegate ใน C#

Delegate ใน C# คล้ายกับ function pointer ใน C/C++ Delegate เป็นตัวแปรชนิดอ้างอิง (reference type) ที่เก็บการอ้างอิงไปยังเมธอด การอ้างอิงนี้สามารถเปลี่ยนแปลงได้ในขณะรันไทม์

ไวยากรณ์การประกาศ Delegate

delegate <return type> <delegate-name> <parameter list>

การสร้างอินสแตนซ์ (Instantiate)

หลังประกาศ delegate type แล้ว ต้องสร้าง delegate object ด้วย new และเชื่อมโยงกับเมธอดเฉพาะ:

public delegate void printString(string s);
...
printString ps1 = new printString(WriteToScreen);
printString ps2 = new printString(WriteToFile);

ตัวอย่างเต็ม

using System;

delegate int NumberChanger(int n);

namespace DelegateAppl {
    class TestDelegate {
        static int num = 10;
        
        public static int AddNum(int p) {
            num += p;
            return num;
        }
        
        public static int MultNum(int q) {
            num *= q;
            return num;
        }
        
        public static int getNum() { return num; }
        
        static void Main(string[] args) {
            NumberChanger nc1 = new NumberChanger(AddNum);
            NumberChanger nc2 = new NumberChanger(MultNum);
            
            nc1(25);
            Console.WriteLine("Value of Num: {0}", getNum());
            
            nc2(5);
            Console.WriteLine("Value of Num: {0}", getNum());
            Console.ReadKey();
        }
    }
}

ผลลัพธ์

Value of Num: 35
Value of Num: 175