C 匿名函式和Lambda表示式

2021-09-28 14:56:11 字數 1936 閱讀 2839

一、匿名函式

匿名函式不等於匿名方法,匿名函式包含了匿名方法和lambda表示式這兩種概念。

1、匿名方法

(1)委託:委託是用於引用與其具有相同標籤的方法。即可以使用委託物件呼叫可由委託引用的方法。

(2)匿名方法(anonymous methods)

提供了一種傳遞**塊作為委託引數的技術。匿名方法是沒有名稱只有主體的方法。

在匿名方法中您不需要指定返回型別,它是從方法主體內的 return 語句推斷的。

delegate void numberchanger(int n);

...numberchanger nc = delegate(int x)

", x);

};

匿名方法是通過使用delegate關鍵字建立委託例項來宣告的。**塊 console.writeline("anonymous method: ", x); 是匿名方法的主體。委託可以通過匿名方法呼叫,也可以通過命名方法呼叫,即,通過向委託物件傳遞方法引數。

2、委託和匿名方法的應用舉例

using system;

delegate void numberchanger(int n);

", num);

}public static void multnum(int q)

", num);

}static void main(string args)

", x);

};// 使用匿名方法呼叫委託

nc(10);

// 使用命名方法例項化委託

nc = new numberchanger(addnum);

// 使用命名方法呼叫委託

nc(5);//10+5

// 使用另乙個命名方法例項化委託

nc = new numberchanger(multnum);

// 使用命名方法呼叫委託

nc(2);//15*2

console.readkey();}}

}

當上面的**被編譯和執行時,它會產生下列結果:

anonymous method: 10

named method: 15

named method: 30

二、lambda表示式

1、lambda表示式實際上是一種匿名函式,在lambda表示式中可以包含語句以及運算等操作。並且可用於建立委託或表示式目錄樹型別,支援帶有可繫結到委託或表示式樹的輸入引數的內聯表示式。使用lambda表示式可大大減少**量,使得**更加的優美、簡潔,更有可觀性。

所有lambda表示式都使用lambda運算子,=>讀作「goes to 」

形式:

(輸入引數)=> 表示式
lambda運算子的左邊是輸入引數,右邊是表示式或語句塊

2、在wimform 下的三個lambda表示式例項

public partial class form1 : form

private void button1_click(object sender, eventargs e)

private delegate void mydelegate();//無參

mydelegate md = () => ;

private delegate void mydelegate2(string msg);

mydelegate2 md2 = m => ;//單個引數可以省掉小括號

private delegate int mydelegate3(params int par);//多參

mydelegate3 md3 = (arr) =>

return count;

};}

C 匿名函式與Lambda表示式

anonymous function that you can use to create delegates or expression tree types.lambda 表示式是一種可用於建立委託或表示式目錄樹型別的匿名函式。通過使用 lambda 表示式,可以寫入可作為引數傳遞或作為函式呼叫...

匿名函式 委託和Lambda表示式

其中匿名的函式簽名可以包括兩種,一種是隱式的匿名函式簽名另一種是顯式的匿名函式簽名 隱式的函式簽名 p p1,p1 顯式的函式簽名 int p int p1,int p2 ref int p1,out int p2 匿名的函式體可以是表示式或者 塊。從上面我們可以看出,lambda表示式的引數形式可...

lambda 表示式和匿名函式 eval函式

lambda 表示式可以用來宣告匿名函式。lambda 函式是一種簡單的 在同一行中定義函式的方法。lambda 函式實際生成了乙個函式物件。lambda 表示式只允許包含乙個表示式,不能包含複雜語句,該表示式的計算結果就是函式的返回值。lambda 表示式的基本語法如下 lambda arg1,a...