C 學習筆記 使用委託將方法作為引數傳遞

2021-09-13 12:25:21 字數 821 閱讀 4847

委託可以讓方法作為引數傳遞給其他方法。可以用乙個例子闡述這一問題。

首先定義乙個委託型別,**如下:

public delegate void mydelegate();
然後在專案生成的progran類中定義兩個方法m1和m2

static void m1()

static void m2()

然後再定義乙個test方法,方法中呼叫委託,隨後又將引數d與m2方法關聯。

static void test(mydelegate d)

//改為與m2方法關聯

d = m2;

}

現在來進行測試呼叫,宣告委託變數de並與m1方法關聯,然後呼叫test方法,在呼叫完test方法後在呼叫一次委託變數de。最終得出如圖所示結果。

mydelegate de = m1;

test(de);

de();

console.readkey();

總結:利用test方法中**修改了引數d,與m2方法進行了關聯,但是,當方法執行完成後,在方法外再次呼叫de,輸出的仍然是"方法1"。因此,本示例不僅演示了如果通過委託實現將方法作為引數傳遞,同時也說明了委託型別在傳遞時是進行自我複製的 。引數d在方法內部被修改,並不影響方法外部的de變數。雖然委託是引用型別,但是方法內部讓委託變數與m2方法進行了關聯,就等於引數d引用了新的委託例項。而外部的委託變數傳遞給引數d時只是把委託的位址進行了自我複製,所以方法呼叫完成後,外部的變數引用的仍然是原來的委託例項。

C 委託系列(一)將方法作為方法的引數

委託 和 事件在 net framework中的應用非常廣泛,然而,較好地理解委託和事件對很多接觸c 時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,而沒有過去的人每次見到委託和事件就覺得心裡別 bi 得慌,混身不自在。本文中,我將通過兩個範例由淺入深地講述什麼是委託...

C 委託系列(一)將方法作為方法的引數

委託 和 事件在 net framework中的應用非常廣泛,然而,較好地理解委託和事件對很多接觸c 時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,而沒有過去的人每次見到委託和事件就覺得心裡別 bi 得慌,混身不自在。本文中,我將通過兩個範例由淺入深地講述什麼是委託...

c 用指標將函式作為引數傳參

今天發現了一種寫法,順便記錄一下。廢話不多說,先看 include using namespace std int addition int x,int y int subtraction int x,int y int operation int x,int y,int function int,...