lambda:“Lambda 表達式”是一個匿名函數,它可以包含表達式和語句,並且可用於創建委託或表達式目錄樹類型
所有 Lambda 表達式都使用 Lambda 運算符 =>,該運算符讀爲“goes to”。該 Lambda 運算符的左邊是輸入參數(如果有),右邊包含表達式或語句塊。Lambda 表達式 x => x * x 讀作“x goes to x times x”。可以將此表達式分配給委託類型。
namespace 測試
{
delegate int MyLambda(int i); //通過關鍵字delegate,聲明委託(MyLambda)、返回值int、參數int
class Test1
{
static void Main(string[] args)
{
GotoMyLambda();
}
public static void GotoMyLambda()
{
MyLambda myDelegate = x => x * x; //MyLambda--類型、myDelegate--簡化理解爲定義的方法名、x形參調用時傳遞的參數
int j = myDelegate(5); //j用於接受上面聲明delegate定義,返回類型的值。
Console.WriteLine(j);
Console.ReadKey();
}
}
}
/**
*官方說明:在前面的示例中,請注意委託簽名具有一個 int 類型的隱式類型輸入參數,
*並返回 int。可以將 Lambda 表達式轉換爲該類型的委託,因爲該表達式也具有一個輸入參數 (x),
*以及一個編譯器可隱式轉換爲 int 類型的返回值。(以下幾節中將對類型推理進行詳細討論。)
*使用輸入參數 5 調用委託時,它將返回結果 25。
***/
輸出結果爲:
25
namespace 測試
{
delegate int MyLambda1(int i); //通過關鍵字delegate,聲明委託(MyLambda)、返回值int、參數int
delegate void MyLambda2(string i);//不存在返回值
class Test1
{
static void Main(string[] args)
{
GotoMyLambda();
}
public static void GotoMyLambda()
{
MyLambda1 myDelegate1 = x => x * x; //MyLambda--類型、myDelegate--簡化理解爲定義的方法名、x形參調用時傳遞的參數
int j = myDelegate1(5); //j用於接受上面聲明delegate定義,返回類型的值。
Console.WriteLine(j);
MyLambda2 myDelegate2 = x => Console.WriteLine(x);
myDelegate2("你好,中國人!");//不存在返回值情況,如果強制返回會編譯不通過
Console.ReadKey();
}
}
}
輸出結果爲:
25
你好,中國人
namespace 測試
{
delegate int MyLambda1(int i); //通過關鍵字delegate,聲明委託(MyLambda)、返回值int、參數int
delegate void MyLambda2(string i);//不存在返回值
delegate bool MyLambda3(int i,int j);
class Test1
{
static void Main(string[] args)
{
GotoMyLambda();
}
public static void GotoMyLambda()
{
MyLambda1 myDelegate1 = x => x * x; //MyLambda--類型、myDelegate--簡化理解爲定義的方法名、x形參調用時傳遞的參數
int j = myDelegate1(5); //j用於接受上面聲明delegate定義,返回類型的值。
Console.WriteLine(j);
MyLambda2 myDelegate2 = x => Console.WriteLine(x);
myDelegate2("你好,中國人!");//不存在返回值情況,如果強制返回會編譯不通過
MyLambda3 myDelegate3 = (x, y) => x == y;//表達式左邊是形參值,多個用(type parameters[].....)
//MyLambda3 myDelegate3 = (int x, int y) => x == y (int x, int y)同上可以指明類型
Console.WriteLine(myDelegate3(3,5));
Console.ReadKey();
}
}
}
輸出結果爲:
25
你好,中國人
false
namespace 測試
{
delegate int MyLambda1(int i); //通過關鍵字delegate,聲明委託(MyLambda)、返回值int、參數int
delegate void MyLambda2(string i);//不存在返回值
delegate bool MyLambda3(int i,int j);
delegate string MyLambda4();
class Test1
{
static void Main(string[] args)
{
GotoMyLambda();
}
public static void GotoMyLambda()
{
//1
MyLambda1 myDelegate1 = x => x * x; //MyLambda--類型、myDelegate--簡化理解爲定義的方法名、x形參調用時傳遞的參數
int j = myDelegate1(5); //j用於接受上面聲明delegate定義,返回類型的值。
Console.WriteLine(j);
//2
MyLambda2 myDelegate2 = x => Console.WriteLine(x);
myDelegate2("你好,中國人!");//不存在返回值情況,如果強制返回會編譯不通過
//3
MyLambda3 myDelegate3 = (int x, int y) => x == y;//表達式左邊是形參值,多個用(type parameters[].....)
Console.WriteLine(myDelegate3(3,5));
//4
MyLambda4 myDelegate4 = () => "Hi,你好武漢人!"; //沒有參數時,左邊用()表示
Console.WriteLine(myDelegate4());
//5無返回值和無參不做討論
Console.ReadKey();
}
}
}
輸出結果爲:
25
你好,中國人
false
Hi,你好武漢人!
以上是個人蔘考文檔所做的筆記,如果存在問題,望大家指出謝謝。