委託初步瞭解(程式碼段展示)

薄荷グ微涼べ發表於2018-10-22

一.非含參委託

using System;
namespace 委託
{
    //2 定義委託型別  委託和目標方法基本一致
    public delegate void DelegateEat();
     class Program
    {//1 應該有目標方法
        public static void ZSEat()
        {
            Console.WriteLine("張三吃飯飯--->");
        }
        public static void LSEat( )
        {
            Console.WriteLine("李四吃飯飯--->");
        }       
        public static void Main(string[] args)
        {  //3 申明委託變數
            DelegateEat delegateEat;
            //4 賦值
            delegateEat = ZSEat;
            delegateEat += LSEat;         
            delegateEat += delegateEat;
            delegateEat -= LSEat; 
            //5 執行委託
            delegateEat();
        }
    }   
}

結果:張三吃飯飯—>

         李四吃飯飯--->
         張三吃飯飯--->

二.含引數委託類

例一:目標函式中放一個引數

using System;
namespace ConsoleApplication1
{    
        public delegate void DelegateEat();//2
        class Program
        {
            /// 第一個引數放置符合型別的方法!!!
            public static void ExcDelegateEat(DelegateEat de)//1
            {              
                Console.WriteLine("先執行");
                de();
            }
            public static void LSEat()
            {                
                Console.WriteLine("趙六吃呵呵噠");              
            }
            public static void Main(string[] args)
            {
                ExcDelegateEat(LSEat);
            }        
    }
}

結果:先執行

趙六吃呵呵噠

例二:目標函式中放兩個引數

using System;namespace ConsoleApplication1
{    
        public delegate void DelegateEat();//2
        class Program
        {
            /// 第一個引數放置符合型別的方法!!!
            public static void ExcDelegateEat(DelegateEat de, string userName)//1
            {              
                Console.WriteLine("{0}在使用吃的功能", userName);
                de();
            }
            public static void LSEat()
            {                
                Console.WriteLine("趙六吃呵呵噠");              
            }
            public static void Main(string[] args)
            {
                ExcDelegateEat(LSEat, "李四");
            }        
    }
}

結果:李四在使用吃的功能

趙六吃呵呵噠

例三:目標函式和委託型別均有兩個引數

 1 using System;
 2 namespace ConsoleApplication1
 3 {    
 4         public delegate void DelegateEat(string x,string y);//2
 5         class Program
 6         {
 7             public static void ExcDelegateEat(DelegateEat de, string userName)//1
 8             {
 9                 string tr = "王五";
10                 string er = "洪七";
11                 Console.WriteLine("{0}在使用吃的功能", userName);
12                 de(tr,er);
13             }
14             public static void LSEat(string m,string n)
15             {
16                 Console.WriteLine("{0}吃呵呵噠",m);
17                 Console.WriteLine("趙六吃呵呵噠");
18                 Console.WriteLine("{0}吃呵呵噠",n);
19             }
20             public static void Main(string[] args)
21             {
22                 ExcDelegateEat(LSEat, "李四");
23                 Console.ReadKey();
24             }        
25     }
26 }

結果:李四在使用吃的功能

王五吃呵呵噠

趙六吃呵呵噠

洪七吃呵呵噠

 

 

相關文章