1、匿名方法,简化委托对象的使用,示例1: C#中匿名类型(一次性使用的类型) var stu =new Name=“张三”,Age=“18 ”,Gender=“ 男” /代码中没有明确的类型名 示例2:定义Event的代码 this.Button1.Click += new EventHandler(Button1_Click) private void Button1_Click( object sender , EventArgs e) / 用匿名方法可以将Event码编写为this.Button1.Click += delegate / ,一.匿名方法,定义匿名方法的语法:delegate
2、 (参数列表) /表达式 或 语句块 匿名方法提供了 Lambda 表达式中所没有的功能:可以使用匿名方法来忽略参数列表。,一.匿名方法,匿名方法的几个要点:1 匿名方法只存在方法,但没有名字。 2 匿名方法简化了委托的实例化工作。换句话说:匿名方法允许以一种“内联”的方式来编写方法代码,将代码直接与委托实例相关联,从而使得委托实例化的工作更加直观和方便。 3 匿名方法直接与委托实例相关联。,一.匿名方法,1.参数列表: delegate void MyDelegate(int i); static void Main(string args) MyDelegate MyDele = dele
3、gate(int i) Console.WriteLine(“hello KiddLee“); ;注:匿名方法可以在delegate关键字后跟一个参数列表(可以不指定),后面的代码块则可以访问这些参数;如果不指定参数列表,则代码如下 delegate void MyDelegate(int i); static void Main(string args)MyDelegate MyDele = delegate Console.WriteLine(“hello KiddLee“); ; ,二、在匿名方法中,有几点问题要注意:,2.匿名方法的返回值 1)如果委托类型的返回值类型为void,那么匿
4、名方法里就不能返回任何值:delegate void MyDelegate();static void Main(string args)MyDelegate mydele = delegate return; 2)若委托类型的返回值类型不为void,则匿名方法返回值也不能为void:delegate int MyDelegate();static void Main(string args) MyDelegate mydele = delegate return 100;,二、在匿名方法中,有几点问题要注意,二、在匿名方法中,有几点问题要注意,注意: /不指定参数列表,对于MyDelegat
5、e来说这种情况是正确的。MyDelegate MyDele = delegate Console.WriteLine(“hello KiddLee“); ;/参数列表为空,对于MyDelegate来说这种情况是错误的。MyDelegate MyDele = delegate() Console.WriteLine(“hello KiddLee“); ;,4. 外部变量 匿名方法的参数的范围是“匿名方法块”。如果局部变量和参数的范围包含匿名方法声明,则该局部变量和参数称为该匿名方法的“外部变量”。 例如,下面代码段中的 n 即是一个外部变量: int n = 0; Del d = delegate() System.Console.WriteLine(“Copy #:0“, +n);,二、在匿名方法中,有几点问题要注意,Thank you,