C# lambda表达式

用三个类来展示委托和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表达式就是一个匿名的方法,没有名字的方法

 

 

posted @ 2012-10-25 20:16  梦断难寻  阅读(381)  评论(0编辑  收藏  举报