匿名方法本质上是一传递给委托的代码块,是使用委托的另一种方法。
规则:
1、匿名方法中不能使用跳转语句跳至次匿名方法的外部,反之亦然;匿名方法外部的跳转语句也不能跳转到匿名方法的内部;
2、在匿名方法的内部不能访问不安全的代码。另外,也不能访问在匿名方法外部定义的ref和out参数。
3、可以使用在匿名方法外部定义的其他变量。
拉姆达表达式:就是匿名方法,只是语法不同。
(param)=>expr
param是输入参数列表,expr是一个表达式或者一系列语句。
规则:
1、在一个具有唯一的显示类型参数的Lambda表达式中,圆括号可以从参数列表中删除。
2、当输入参数不唯一时,括号不能省略。
3、输入参数列表中的各参数可以显式指定类型,也可以省略参数类型,具体类型通过类型判断机制判断。
4、expr可以只包含一个计算表达式,也可以包含一系列语句,只是语句需要包含在大括号中。
expr 为语句的时候:
1: using System;
2:
3: using System.Collections.Generic;
4:
5: using System.Linq;
6:
7: using System.Text;
8:
9: namespace DelegateSample
10:
11: {
12:
13: publicdelegatevoid PrintDelegate(string content);
14:
15: class Program
16:
17: {
18:
19: staticvoid Main(string[] args)
20:
21: {
22:
23: PrintDelegate pd = (string str) =>
24:
25: {
26:
27: System.Console.WriteLine("Printing...");
28:
29: System.Console.WriteLine("Content:{0}", str);
30:
31: };
32:
33: pd("The quick brown fox jumps oyer a lazy dog.");
34:
35: }
36:
37: }
38:
39: }
本文转自 OH51888 51CTO博客,原文链接:http://blog.51cto.com/rozbo/1260116,如需转载请自行联系原作者