• 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);

     

  • 相关阅读:
    Java基础课程---将一个字符串反转,将字符串中指定部分进行反转,比如,"abcdefg", 反转为"abfedcg"
    在Centon64位中卸载安装时系统自带的--openjdk,并且安装自己需要的jdk
    Java基础课程---sleep()方法 和 wait()方法的异同(面试题)
    Java基础课程---权限修饰符
    Java基础课程---
    MySQL 创建库
    brew
    android webview load 本地文件需要注意的地方
    android下隐藏标题栏
    android webview无法加载网页
  • 原文地址:https://www.cnblogs.com/arcticfish/p/12296082.html
Copyright © 2020-2023  润新知