심도 있는 위탁과 멀티캐스트 위탁의 상세한 해석

3378 단어
 
  
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
    class
    {
        public static double Area(double Val)
        {
            return Val * 2;
        }
        public static double Scare(double Val)
        {
            return Val * Val;
        }
    }
    class Test
    {
        public delegate double delegateTest(double dd);
        static void Main()
        {
            // ,( , )
            delegateTest[] Operations =
                {
                    // ,
                  new delegateTest( .Area),
                  new delegateTest( .Scare)
                };
            for (int i = 0; i < Operations.Length; i++)
            {
                Console.WriteLine("Using Operations[{0}]", i);
                Test MyTest = new Test();
                // ProcessDelagate() ,Operations[0] delegateTest Operations =new delegateTest( .Area); ProcessDelagate Operations .Area
                MyTest.ProcessDelagate(Operations[i], 12.0);
                MyTest.ProcessDelagate(Operations[i], 2.0);
                Console.WriteLine();
            }
        }
        // ProcessDelagate()
        void ProcessDelagate(delegateTest Action, double d)
        {
            double Result = Action(d);
            Console.WriteLine(" {0}, {1}", d, Result);
        }
    }
}
 
  
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
    // , , , !
    class
    {
        // void
        public delegate void DelageteTest(double val);
        static void Main()
        {
            // 2
            DelageteTest MyTest = new DelageteTest(Test.Area);
            MyTest += new DelageteTest(Test.Scare);
            // 3
            //DelageteTest MyTest;
            //DelageteTest Test1 = new DelageteTest(Test.Area);
            //DelageteTest Test2 = new DelageteTest(Test.Scare);
            //MyTest = Test1 + Test2;
            = new ();
            .OPreation(MyTest, 2.0);
            .OPreation(MyTest, 12.0);
        }
        void OPreation(DelageteTest Action, double d)
        {
            Action(d);
        }
    }
    class Test
    {
        public static void Area(double Val)
        {
            Console.WriteLine(Val * 2);
        }
        public static void Scare(double Val)
        {
            Console.WriteLine(Val * Val);
        }
    }
}

좋은 웹페이지 즐겨찾기