程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#委托聲明實例化與調用

c#委托聲明實例化與調用

編輯:C#入門知識

系統訪問數據或調用方法有兩種操作方式:一種是通過名稱訪問或調用,另一種是通過所在的內存地址來訪問調用。為了系統的安全與穩定,NET Framework的CLR庫不允許程序通過指針來直接操作內存中數據或方法,而是通過托管機制來訪問內存中數據或調用內存中的方法。委托就是C#提供的一種以托管機制調用方法的特殊數據類型,其作用於房屋租憑中介機構類似。

下面我們要所的主要圍繞以下三點

//1.定義委托
//2.委托的實例化
//3.委托的調用,實際上是將委托指向已經實現的某個方法

//注意:調用的方法必須返回類型和定義的委托返回類型一致


 委托是一個類,它定義了方法的類型,使得可以將方法當做參數進行傳遞。

一:委托的定義

在C#中使用關鍵字delegate聲明委托。聲明委托的一般形式是:

//委托的定義

      // [訪問修飾符] delegate 數據類型 委托名(參數列表....)

          在使用委托前是一定先要定義的
          例如:Delegate void d(int x)


          二:實例化( 與方法綁定) 
          為了與命名方法一起使用,委托必須用具有可接受簽名的方法進行實例化。

          實例化的方法可用下列方法各項之一

          “委托創建表達式”中引用的靜態方法,或者“委托創建表達式”中引用的目標對象(此對象不能為 null)和實例方法 另一個委托
          例如:

          Delegate void d(int x)
           
           
          delegate void D(int x);
          class C
          {
             public static void M1(int i) {...}
             public void M2(int i) {...}
          }
          class Test
          {
             static void Main() {
                D cd1 = new D(C.M1);      // static method
                Test t = new C();
                D cd2 = new D(t.M2);      // instance method
                D cd3 = new D(cd2);      // another delegate
             }
          }



          三.委托調用

          創建委托對象後,通常將委托對象傳遞給將調用該委托的其他代碼。通過委托對象的名稱(後面跟著要傳遞給委托的參數,括在括號內)調用委托對象。下面是委托調用的示例:

          public delegate int MathOp(int i,int j);//定義委托 
              class DelegateTest 
              { 
                  public static int  add(int i, int j) {//方法 
                      return i + j; 
                  } 
                  public static int Mutiply(int num1, int num2) {//方法 
           
                      return num1 * num2; 
                   
                  } 
           
           
                  static void Main(string[] args) 
                  { 
                      MathOp mo = new MathOp(add);//委托的實例化,指向add方法 
                      MathOp maOp = new MathOp(Mutiply);//委托的實例化,指向Mutiply方法 
           
                      Console.WriteLine(mo(10, 20));//委托的調用 
                      Console.WriteLine(maOp(4, 5));//委托的調用 
           
                      Console.ReadLine(); 
                  } 
              } 
           
            
          } 


          認識:
          以前對委托的認識只是知道委托是方法的調用。通過這次的項目實例了解到委托也是需要定義,實例化與調用的。還是先前學藝不精占呀。委托的使用通常與匿名函數或lambda表達式匹配使用,下篇介紹匿名函數。

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