c#中的委託

Ritchie里奇發表於2024-11-28

委託:delegate

與類平級
用於封裝,解耦

// 宣告一個委託
delegate void Func(int x);

簡單使用

namespace ConsoleApp2;

class Program
{
    /**
     * 委託
     */
    public delegate double CalculateFunction(double x, double y);
    
    /**
     * 加法
     */
    static double Add(double x, double y)
    {
        return x + y;
    }

    /**
     * 減法
     */
    static double Subtract(double x, double y)
    {
        return x - y;
    }

    // Test方法的引數就是一個方法,
    static void Test(CalculateFunction calculateFunction)
    {
        Console.Write("請輸入x的值:");
        double x = Convert.ToDouble(Console.ReadLine());
        Console.Write("請輸入y的值:");
        double y = Convert.ToDouble(Console.ReadLine());
        
        double result = calculateFunction(x, y);
        Console.WriteLine($"x與y委託計算的結果>>>{result}");
    }
    
    static void Main(string[] args)
    {
        // CalculateFunction cal = new CalculateFunction(Add);
        // double d = cal(3, 4);
        
        // Test(new CalculateFunction(Add));
        
        Test(Add); // 簡寫
        Test(Subtract);
        
        Console.ReadKey();
    }
}

介面實現了類的依賴注入

委託實現了方法的依賴注入

相關文章