一、匿名函式
匿名函式不等於匿名方法,匿名函式包含了匿名方法和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...