1 public delegate void dele(string s);//声明一个string类型的单参数空类型的委托dele 2 3 上面的委托dele可被用于引用任何一个带有单string参数 空 类型的方法 4 5 public void M1(string s)//例如存在一个M1方法 6 { 7 console.write("方法1"+s); 8 } 9 10 11 //将方法M1委托给dele 12 13 dele = M1; 14 15 16 //使用委托调用方法 17 dele("被委托"); 18 声明委托的语法如下: 19 delegate <return type> <delegate-name> <parameter list>
1 //首先声明一个委托 2 public delegate void Dele(string s); 3 4 Dele dele = null; 5 6 //一个普通的方法 7 public void M1(string s) 8 { 9 Console.Write("方法一:"+s); 10 } 11 12 //使用委托引用方法 13 14 dele += M1; 15 16 dele("委托"); 17 18 ------------ 19 Result: 20 方法一:委托 21 ------------ 22 23 //委托可以用作方法的参数 24 25 //方法二,第一个参数是 26 27 public void M2(Dele dele, string s) 28 { 29 dele(s); 30 } 31 32 //M1是一个方法,可以作为参数传入 33 34 M2(M1,"委托作为参数"); 35 36 ------------------ 37 Result: 38 方法一:委托作为参数 39 ------------------ 40 41 //Lambda表达式 42 43 dele = (string s) => {Console.Write("方法一:"+s);}; 44 45 dele("Lambda1"); 46 47 ---------------- 48 Result: 49 方法一:Lambda1 50 ---------------- 51 52 //因为编译器会进行类型推断,所以可以省略参数类型。 53 54 dele = (s) => {Console.Write("方法一:"+s);}; 55 56 dele("Lambda2"); 57 58 --------------- 59 Result: 60 方法一:Lambda2 61 ----------------- 62 63 //Lambda表达式作为参数 64 65 public void M3(Dele dele, string s) 66 { 67 dele(s); 68 } 69 70 //Lambda表达式作为参数 71 72 M3((string s) => Console.WriteLine("方法三:"+s),"Lambda1");//单行代码可以省略大括号 73 74 //Lambda表达式作为参数 75 76 M3((s) => {Console.WriteLine("方法三:"+s),"Lambda2");}; 77 78 -------------------- 79 Result: 80 方法三:Lambda1 81 方法三:Lambda2 82 -------------------- 83 84 //匿名方法 85 86 Dele dele = delegate(string s) 87 { 88 Console.WriteLine("匿名方法:" + s); 89 }; 90 91 dele("实现"); 92 93 --------------- 94 Result: 95 匿名方法:实现 96 ------------- 97 98 //匿名方法作为参数 99 100 public void M4(Dele dele,string s) 101 { 102 dele(s); 103 } 104 105 M4(delegate(string s) {Consolr.WriteLine("匿名方法作为参数:" + s); }, "实现"); 106 107 ------------------------- 108 Result: 109 匿名方法作为参数:实现 110 -------------------------
这些知识是我在课堂内没有学到的(外聘老师.....)今天听了一天公开课,感慨很深,因为热爱着这个职业,所以一直在学习,但是一个初学者仅仅靠自己,总不会走太远,如果一个人足够牛X,说不定也能靠自己走到终点,但是很显然,我与这俩字不沾边.....哈哈,很多知识掌握存在盲区,之前学习也是东一榔头西一棒槌的没有一个好的学习路线,浪费了很多时间,现在还是一点一点踱步前进吧,期待有前辈看到笔记的不足之处能够指出,也希望MS的.NET(Core)会越来越好,加油!!!
原文:https://www.cnblogs.com/wangxiao666/p/12501179.html