C〓〓〓返事関数(賛)


原文の出所:http://blog.csdn.net/echo_qiang/articale/detail/6996595
C((xi)コールバック関数の応用例、イメージ比喩方法は理解を助け、簡単な例を整理して、コールバック関数の使い方を説明した。 
namespace CallBackFunction 
{ 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            Program prog = new Program();//     Main         ,          ,    GetSum   
            SumClass sc = new SumClass();//   SumClass  
            int result=sc.SumAll(prog.GetSum); 
            Console.WriteLine(result.ToString()); 
        }

        private int GetSum(int a, int b) 
        { 
            return (a + b); 
        } 
    }
    class SumClass 
    { 
        public delegate int Sum(int num1, int num2); 
        public int SumAll(Sum sum) 
        { 
            //          
            return sum(1, 2);//            
        } 
        //              
    } 
} 
この例は非常に簡単であり、SumClass類はパッケージされたものと仮定し、ある種類の業務ロジックを実現するクラスである。 
このうち一つの依頼(delegate)Sum返却値はint型で、二つのint型のパラメータがあります。 また、返す値はint方法SumAllも含まれています。この方法のパラメータは、Sumタイプのパラメータであり、関数の参照としても理解できます。パラメータのsumとしては、関数の参照とも言えます。この関数の戻り値はintであり、2つの整数パラメータを提供しています。今は大体理解できますよね?依頼とは、方法署名のセットの同じ関数の参照の「クラス」であると考えられてもよく、その各例は、この方法の署名の関数に合致する参照である。この方法ではいくつかの動作を行い、伝達された関数参照(sum)を呼び出すことができ、このときsumの方法内の具体的なトラヒックロジックがどのようなものかは不明であり、SumClassはインターフェースの役割を果たしている。この時、インターフェースはSumClassクラスのクライアントを呼び出して、「コールバック関数」を定義することによって、その具体的な機能を実現する必要があります。  Program類を見ると、このクラスはSumClassというクラスの一つの「クライアント」を呼び出します。 まずGetSumという方法を見てください。戻り値はintで、二つのint型のパラメータを受け入れます。前に述べたように、GetSumはクライアントの「コールバック関数」としてパラメータとして使用されていることが分かります。この関数は2つのパラメータを加算して返してくれる業務ロジックを実現しました。 Main関数では、SubClassクラスのSubAll方法を呼び出し、Programe類のGetSum方法の参照をパラメータとしてSubAll方法に伝達し、SubAllでGetSumという2つのパラメータを加算する方法を呼び出し、1と2を3に加算してスクリーンに出力します。 通常、SubClassクラスはDLLにカプセル化されるが、パラメータタイプは一つの依頼であり、この依頼の一例(コールバック関数)に入ってSubClassがそのトラヒックロジックを実現するのを助ける。 最後にもう一つの生活の例を挙げて理解してください。 ある日あなたの妻が市場に野菜を買いに行くように言いましたが、怠けているので息子に買ってもらい、料理を買ってきたら妻に渡します。妻は料理がほしいだけで、料理は誰が買ったのか気にしません。次の日は妻があなたに米を買ってくれと言いました。結局息子に任せました。三日目に妻が肉を買いに行きました。可哀相な息子は再び呼ばれました。 これらのことから私たちは一つの類型を抽象的に示すことができる. このクラスは妻に何をさせても、息子を働かせます。「息子にやらせます」という依頼を定義します。そして、「野菜を買う」「肉を買う」などの関数が入ってきます。これは、妻が「野菜を買う」、「肉を買う」、あるいは他のどんなことを必要としても、あなたの種類によって完成できます。