C# 中委託的簡單理解

來源:互聯網
上載者:User
    委託是一種可以把引用存儲為函數的型,聽起來很棘手,但其機制是非常簡單。
    據我個人理解,可以解釋為:委託是一個可以調用其它方法、事件等的架子。
    委託的的聲明類似於函數,但不帶函數體,且要使用delegate關鍵字。委託的聲明指定了一個函數名,其它包含一個返類型和參數列表。
下邊做一個簡單的例字,幫助大家理解。

    class Program
    {
        /// <summary>
        /// 1、定義委託
        /// </summary>
        /// <param name="param1"></param>
        /// <param name="param2"></param>
        /// <returns></returns>
        delegate double ProcessDelegate(double param1, double param2);
        /// <summary>
        /// 得到乘積
        /// </summary>
        /// <param name="param1"></param>
        /// <param name="param2"></param>
        /// <returns></returns>
        static double Multiply(double param1, double param2)
        {
            return param1 * param2;
        }
        /// <summary>
        /// 得到除數
        /// </summary>
        /// <param name="param1"></param>
        /// <param name="param2"></param>
        /// <returns></returns>
        static double Divide(double param1, double param2)
        {
            return param1 / param2;
        }

        static void Main(string[] args)
        {
            //2、聲明一下委託變量
            ProcessDelegate process;
            Console.WriteLine("Enter 2 number separated with a comma:");
            string input = Console.ReadLine();
            int commaPos = input.IndexOf(',');
            double param1 = Convert.ToDouble(input.Substring(0,commaPos));
            double param2 = Convert.ToDouble(input.Substring(commaPos+1,input.Length-commaPos-1));
            Console.WriteLine("Enter M to multuply or D to divide:");
            input = Console.ReadLine();
            if (input=="M")
            {
                
                //3、把一個函數引用賦給委託變量。
                //註:須使用new 關鍵字創建一個新委託,在這個關鍵字後面,指定委託類型,提供一個函數,不帶括號
                //此處將調用 Multiply()函數
                process = new ProcessDelegate(Multiply);
            }
            else
            {
                process = new ProcessDelegate(Divide);
            }
            //4、使用委託調用函數
            Console.WriteLine("Result:{0}",process(param1,param2));
            Console.ReadKey();
        }
    }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.