程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 代理方法關鍵字Action與Fun的使用

代理方法關鍵字Action與Fun的使用

編輯:C++入門知識

代理是一種特殊的,指向某個方法模塊所在的地址。一般來講,那個方法模塊,可以是一個普通的方法,更多的時候,是一團匿名的lamda表達式,即一個匿名方法。現在簡單理解一下代理的簡寫方式,即Action關鍵字。

    class A
    {
        B b = new B();

        public delegate string Show(string result);

        public string Execute()
        {
            Show s = new Show(b.MyShow);
            string str = s.Invoke("ttt");
            return str;
        }
    }

    class B
    {
        public string MyShow(string s)
        {
            return s + ">>>>>>>>>";
        }
    }

    static void Main(string[] args)
    {
        A a = new A();
        a.Execute();
    }
這樣,使用A的時候,只改變B中MyShow的代碼,就能定制A中Execute的執行結果。具有同樣功能的代碼,我們用Action類型來完成。
    class C
    {

        D d = new D();
        Action action;

        public void Execute()
        {
            action = d.MyShow2;
            action.Invoke("ttt");
        }
    }

    class D
    {
        public void MyShow2(string s)
        {
            Console.WriteLine(s + ">>>>>>>>>");
        }
    }

    static void Main(string[] args)
    {
        A a = new A();
        a.Execute();
    }

這段代碼與上邊的代碼具有同樣的效果。可以看出,從本質上講,就是Action就是delegate的簡化模式,就如果lamda表達式來簡化匿名方法一樣。當匿名方法必須要有返回值的時候,我們使用Fun類型來處理。使用方法基本上有Action相同,只是對於參數,前幾個是傳入值,最後一個是返回值。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved