Lamda 表達式
- Lamda表達式,本質上還是匿名函數
- 匿名函數,本質上也是一個函數 它的簽名要跟咱們委派簽名一樣
沒有參數、沒有回傳值
聲明一個委派(沒有參數、沒有回傳值)
1
public delegate void DelOne();
用匿名函數來寫
1
DelOne del = delegate () { }; //沒有參數,沒有回傳值
搞成 Lamda表達式
1
DelOne del = () => { }; //沒有參數,沒有回傳值
1 2 () => { }; // Lamda表達式 delegate () { }; //匿名函數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace Lamda表達式
{
public delegate void DelOne();
public delegate void DelTwo(string name);
public delegate string DelThreee(string name);
internal class Program
{
static void Main(string[] args)
{
//Lamda表達式,本質上還是匿名函數
//匿名函數,本質上也是一個函數
//它的簽名要跟咱們委派簽名一樣
//用匿名函數來寫
DelOne del = delegate () { }; //沒有參數,沒有回傳值
//搞成 Lamda
DelOne del = () => { }; //沒有參數,沒有回傳值
}
}
}
一個參數,沒有返回值
聲明一個委派(有一個參數、沒有回傳值)
1
public delegate void DelTwo(string name);
匿名函數 & Lamda表達式
1
2
3
//一個參數,沒有返回值
DelTwo del2 = delegate (string name) { }; //匿名函數
DelTwo del2 = (string name) => { }; //lamda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
namespace Lamda表達式
{
public delegate void DelOne();
public delegate void DelTwo(string name);
public delegate string DelThreee(string name);
internal class Program
{
static void Main(string[] args)
{
//Lamda表達式,本質上還是匿名函數
//匿名函數,本質上也是一個函數
//它的簽名要跟咱們委派簽名一樣
//用匿名函數來寫
//DelOne del = delegate () { }; //沒有參數,沒有回傳值
//搞成 Lamda
DelOne del = () => { }; //沒有參數,沒有回傳值
//一個參數,沒有返回值
//DelTwo del2 = delegate (string name) { };
DelTwo del2 = (string name) => { };
}
}
}
有參數、有返回值
聲明一個委派(有一個參數、有回傳值)
1
public delegate string DelThreee(string name);
匿名函數 & Lamda表達式
1
2
3
//既有參數也有返回值
DelThreee del3 = delegate (string name) { return name; };//匿名函數
DelThreee del3 = (string name) => { return name; };//Lamda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
namespace Lamda表達式
{
public delegate void DelOne();
public delegate void DelTwo(string name);
public delegate string DelThreee(string name);
internal class Program
{
static void Main(string[] args)
{
//Lamda表達式,本質上還是匿名函數
//匿名函數,本質上也是一個函數
//它的簽名要跟咱們委派簽名一樣
//用匿名函數來寫
//DelOne del = delegate () { }; //沒有參數,沒有回傳值
//搞成 Lamda
DelOne del = () => { }; //沒有參數,沒有回傳值
//一個參數,沒有返回值
//DelTwo del2 = delegate (string name) { }; //匿名函數
DelTwo del2 = (string name) => { }; //Lamda
//既有參數也有返回值
//DelThreee del3 = delegate (string name) { return name; };//匿名函數
DelThreee del3 = (string name) => { return name; };//Lamda
}
}
}
Lamda寫在 List方法裡
1
2
3
4
5
6
7
8
9
List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//元素要滿足條件才能移除,n代表元素(隨便寫),什麼條件n>4
list.RemoveAll(n => n > 4); //lamda
//看結果
foreach (var item in list) {
Console.WriteLine(item);
}
完整Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace Lamda表達式
{
public delegate void DelOne();
public delegate void DelTwo(string name);
public delegate string DelThreee(string name);
internal class Program
{
static void Main(string[] args)
{
//Lamda表達式,本質上還是匿名函數
//匿名函數,本質上也是一個函數
//它的簽名要跟咱們委派簽名一樣
//用匿名函數來寫
//DelOne del = delegate () { }; //沒有參數,沒有回傳值
//搞成 Lamda
DelOne del = () => { }; //沒有參數,沒有回傳值
//一個參數,沒有返回值
//DelTwo del2 = delegate (string name) { }; //匿名函數
DelTwo del2 = (string name) => { }; //Lamda
//既有參數也有返回值
//DelThreee del3 = delegate (string name) { return name; };//匿名函數
DelThreee del3 = (string name) => { return name; };//Lamda
List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//元素要滿足條件才能移除
//n代表元素(隨便寫),什麼條件n>4
list.RemoveAll(n => n > 4);
foreach (var item in list) {
Console.WriteLine(item);
}
Console.ReadKey();
}
}
}