• C#委拖小例子


    委托具有以下属性:

    • 委托类似于 C++ 函数指针,但它们是类型安全的。

    • 委托允许将方法作为参数进行传递。

    • 委托可用于定义回调方法。

    • 委托可以链接在一起;例如,可以对一个事件调用多个方法。

    • 方法不必与委托类型完全匹配。 有关详细信息,请参阅在委托中使用变体(C# 和 Visual Basic)

    • C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递来代替单独定义的方法。 C# 3.0 引入了 Lambda 表达式,利用它们可以更简练地编写内联代码块。 匿名方法和 Lambda 表达式(在某些上下文中)都可编译为委托类型。 这些功能现在统称为匿名函数。 有关 lambda 表达式的更多信息,请参见 匿名函数(C# 编程指南)

     1 private void btnOpen_Click(object sender, EventArgs e)
     2         {
     3             
     4 
     5             Func<int, bool> t1 = testa;//注册方法只写方法名,不写参数。。。
     6 
     7             int[] i = { 1, 2,5 };
     8             int j=i.Count(t1);
     9 
    10             int h = i.Count(n=>n%2==0);//等效
    11 
    12             MessageBox.Show(j.ToString());
    13         }
    14 
    15         private bool testa(int a)
    16         {
    17             return a%2==0;
    18         }

    代码解读(个人理解):

      一个int型数组有一个扩展方法Count<>,参数接收的是一个public delegate TResult Func<in T, out TResult>(T arg) 类型的委托 ;

      代码第5行定义了一个Func<int, bool> t1 委托,并给t1注册了方法testa;

      代码第8行把t1做为参数传递给Count方法,Count把数组的每个元素做为t1的参数执行后,返回所有为true的总数;

      第10行是用lambda表达式方式,省去了定义委拖对象和方法,系统会将表达式做类型转换和参数类型推断;

  • 相关阅读:
    ELK的学习与应用
    windows 常用命令
    Electron笔记
    C#基础
    IIS运行NetCore程序
    nuget打包
    web pack备忘
    基于并发订课系统的架构演变
    面试造核弹的童话
    Python3-接口自动化-11-使用join方法请求参数拼接,格式key1=value1&keys=value2....
  • 原文地址:https://www.cnblogs.com/longling2344/p/5769664.html
Copyright © 2020-2023  润新知