zoukankan      html  css  js  c++  java
  • C#委托,delegate,匿名函数和lambda

    1委托就是可以把方法当作参数传递

    2可以把委托看作一个类来使用;

    3委托使用前需要实例化

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication7
    {
    class Program
    {
    public delegate void BuyTicketDelegate(string msg);
    static void Main(string[] args)
    {
    BuyTicketDelegate t1 = new BuyTicketDelegate(WriteLog);
    t1("测试");
    }
    static void WriteLog(string msg)
    {
    Console.WriteLine("当前日志是:"+msg);
    Console.ReadLine();
    }
    }
    }

    private void button1_Click(object sender, EventArgs e)
    {
    //匿名委托 Func<int, int> del
    //类型》变量》实例
    //Func是一个匿名委托类型,是一个没有名字的类型
    //怎样确定它的签名:需要若干数据类型作为参数(前面的规定参数类型,最后一个规定返回值类型)
    //可以直接定义一个委托变量

    //匿名函数 delegate(int a) { return a; };
    //与普通函数的区别就是将函数名换成了delegate

    //下面的表达式,就是一个通过匿名委托定义的变量del引用了一个匿名函数
    //与int a=1的过程,是相同的道理
    //Func<int, int> del = delegate(int a) { return a; };
    //MessageBox.Show(del(5).ToString());

    //后来发现,匿名函数肯定要放到委托里,参数类型已确定好,于是有了更简捷的写法,把参数类型也省去
    //就出现了lambda表达式
    Func<int, int> del = a => { return a; };
    MessageBox.Show(del(6).ToString());
    }

    转载:https://www.cnblogs.com/dawasai/p/4443903.html

    本文来自博客园,作者:.net&new,转载请注明原文链接:https://www.cnblogs.com/wugh8726254/p/12645420.html

  • 相关阅读:
    匿存函数,内存函数,递归函数,二分法查找
    内置函数
    生成器函数,推导式,生成器表达式
    函数名的应用,闭包,迭代器
    动态参数,作用域
    函数,返回值,参数
    文件操作
    什么是协程
    MYSQL允许远程访问
    phpstorm+xdebug搭建
  • 原文地址:https://www.cnblogs.com/wugh8726254/p/12645420.html
Copyright © 2011-2022 走看看