委托与Lambda表达式

时间:2022-09-12 18:48:35

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

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

一.委托的定义:

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

    public delegate void Del(string parameter);

  委托的使用方法:

委托与Lambda表达式委托与Lambda表达式
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(无返回值泛型委托)  

        委托与Lambda表达式 

  Func(有返回值泛型委托)

      委托与Lambda表达式

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表达式

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

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

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

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