Home [C# 筆記] Lambda 表達式
Post
Cancel

[C# 筆記] Lambda 表達式

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();
        }
    }
}
This post is licensed under CC BY 4.0 by the author.