委托的定义使用

一.什么委托:

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。

    • 在方法重载的上下文中,方法的签名不包括返回值
    • 在委托的上下文中,方法的签名是包含返回值的

二.委托的定义:

  委托(delegate)的声明的语法如下:

    public delegate void Del(string parameter);

  委托的使用方法:

public delegate void Del(string parameter);//声明委托
class Program
{
    static void Main(string[] args)
    {
        Del del = WeiTuo;  //指向具有相同签名的方法
        del("ok");     //通过委托来进行调用
        Console.ReadKey();
    }
    public static void WeiTuo(string str)//与声明有相同的签名
    {
        Console.WriteLine("委托"+str);
    }  
}
View Code

三.委托的属性概述:

    1. 类似于C和C++中的函数指针,但他们是类型安全的
    2. 允许将方法作为参数进行传递
    3. 可用于定义回调方法
    4. 委托类型派生自.NET Framework中的Delegate类,委托类型是封装的,不能派生出其他类

四.委托的简单演化过程:

public delegate void MyDel();
class Program
{
    static void Main(string[] args)
    {
        MyDel del1 = new MyDel(WeiTuo);  //大于等于C#1
        MyDel del2 = WeiTuo;            //大于等于C#2,上面的简化版
        MyDel del3 = delegate()
        {
            Console.WriteLine("匿名方法委托");
        };
        MyDel del4 = () => {
            Console.WriteLine("lambda表达式");
        };
        del4();
        Console.ReadKey();
    }
    public static void WeiTuo()
    {
        Console.WriteLine("委托");
    } 
}

五.泛型委托:

  Action(无返回值泛型委托)  

         

  Func(有返回值泛型委托)

      

Func<int,bool>表示:int为输入参数,bool为返回值
Func<int,int,bool>表示:2个int为输入参数,一个bool为返回值

六.Lambda简介:

   Lambda表达式,是一种简化的匿名函数。可以用于创建委托或表达式目录树。其次,也可以将Lambda表达式作为参数进行传递

       匿名方法:  

          //定义委托
          delegate void Add(int a,int b);
          //实例委托,使用匿名方法
          Add add = delegate(int a, int b)
                {
                  Console.WriteLine(a + "+" + b + "=" + (a + b));
                };
        调用:
          add(10,29);
 
Lambda的诞生:

  Lambda表达式的语法基本形式:

    基本形式:(输入参数)=>表达式

         (输入参数)=>{表达式}

写法:
()=>true; X=>x==1; (X)=>x==1; (x,y)=>x==y;

 

posted on 2017-03-05 00:09  风雪幻林  阅读(864)  评论(0编辑  收藏  举报