• C# 委托学习笔记


      委托的使用主要是为了解决不知道什么时候可能触发的这种事件而用的,比如你开了一家餐馆,要做饭,收钱等,还需要接听不定期打来前台的电话,这时候你就可以把这个工作交给会接电话的儿子来做这个事情 。这个过程就叫做委托。儿子接完电话可以告诉你也可以不告诉你,这就看这个委托的类型

    一、普通委托(比如我们要执行一个两数的加法运算)

    第1步:定义委托(接电话这个事)

    public delegate int AddDel(int a,int b);

    第2步:写真正的执行加法的方法(定义一个会接电话的儿子)

    public int FuncAdd(int a,int b)

    {

    return a+b;

    }

    第3步:将方法绑定到委托,一个委托可以绑定多个方法,只要参数符合要求,这就是我们所说的多播委托(告诉儿子接电话这个事情)

    AddDel myadddel = new AddDel(FancAdd);

    第4步:开始(儿子开始等电话)

    myadddel(3, 4);或者 myadddel.Invoke(3,4);

    二、泛型委托

      其实系统已经内置了两个定义好的委托,我们可以省略普通委托中的第1步

    这两个系统委托就是Func<T> 和Action<T>区别是Func 参数列表T,最后一个是返回值,而 Active无任何返回值。(参数列表T,最多16个输入函数,可以是任何类型)

     1.Func委托

      比如 两数相加我们使用Func写如下:

    #region 匿名委托Func 返回处理结果
    Func<int, int, int> 我的匿名委托 =
    delegate(int a, int b)
    {
    return a + b;
    };
    #endregion

       2.Action委托

        如果我们执行一个不需要返回结果的委托则使用Action  比如我们让说一句 hello world 

    #region 匿名委托Active 不返回处理结果
    Action<string> 我的匿名委托2 =
    delegate(string s)
    {
    Console.WriteLine(s);
    };
    我的匿名委托2.Invoke("hello world ");

    #endregion

    3.使用lambda表达式简化委托写法

    Func<int, int, int> 我的lambda表达式委托 =
    (int a, int b) => a + b;

     Action<string >  我的lambda表达式委托2=

    (s)=>console.writeline(s);

     

  • 相关阅读:
    python爬虫中遇到的问题以及解决方法
    python爬虫中涉及json数据的处理
    python——selenium库的使用
    python数据可视化(一)——绘制随机漫步图
    Python练习题——用列表的方法输出杨辉三角
    python——使用xlwing库进行Excel操作
    DesignPattern_Java:Factory Method Pattern
    eclipse导出可执行的jar包
    DesignPattern_Java:SingletonPattern
    DesignPattern_Java:设计模式分类和设计原则
  • 原文地址:https://www.cnblogs.com/arcticfish/p/12296082.html
Copyright © 2020-2023  润新知