用三个类来展示委托和Lambda表达式的使用.
1.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class LambdaTest { //来定义几个方法.让委托变量绑定 public static void ShowName() { Console.WriteLine("姓名: Tony / 梦断难寻"); } public static void ShowAge() { Console.WriteLine("年龄 : 19"); } public static void ShowGender() { Console.WriteLine("性别 : 男"); } } }
2.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Control { //定义委托 public delegate void MyDelegate(); //定义委托变量 private MyDelegate MyDega; //在Control类的构造函数中实例化MyDaga这个委托变量 public Control() { MyDega += LambdaTest.ShowName; MyDega += LambdaTest.ShowAge; MyDega += LambdaTest.ShowGender; } public void Show() { MyDega(); } //写一个Add方法,来动态更改委托变量里面的方法集合 public void Add(MyDelegate Funtion) { MyDega += Funtion; } } }
在下面的类中使用前面两个类.
using System; using System.Collections.Generic; using System.Linq; using System.Text; //我添加了一个新的类.在LambdaTest.cs文件中 namespace ConsoleApplication1 { class Program { public void Marriage() { Console.WriteLine("婚否:过了好多年的光棍节了"); } public void Profession(string Str) //给Lambda表达式用的方法 { Console.WriteLine("职业:" + Str); } static void Main(string[] args) { //现在来实例Control类 Control Cl = new Control(); Cl.Show(); Console.WriteLine("--------------------------------------------------"); //动态的给Control类中的委托变量添加一个方法, 就添加下面的Marriage方法. Program Pg = new Program(); Cl.Add(Pg.Marriage); Cl.Show(); Console.WriteLine("--------------------------------------------------"); // Lambda表达式来了. Cl.Add(() => { Pg.Profession("码农"); }); Cl.Show(); Console.WriteLine("--------------------------------------------------"); } } } // Lambda表达式的格式是这样的 : () => {}; // ↓ ↓ ↓ // 方法参数 告诉编译器 方法体 // 这个是Lambda // 表达式 // 说白了. lambda表达式就是一个匿名的方法,没有名字的方法