• C# 委托及匿名函数


    一、 为什么使用委托,代码如下;(注释掉的是没用委托之前的使用方式,没有注释的是使用了委托的

                       

      public delegate string DelProStr(string name);
    class Program
    {
    static void Main(string[] args)
    {
    //三个需求
    //1、将一个字符串数组中每个元素都转换成大写
    //2、将一个字符串数组中每个元素都转换成小写
    //3、将一个字符串数组中每个元素两边都加上 双引号
    string[] names = { "abCDefG", "HIJKlmnOP", "QRsTuvW", "XyZ" };
    //ProStToUpper(names);
    //ProStrToLower(names);
    // ProStrSYH(names);
    
    ProStr(names, delegate(string name)
    {
    return """ + name + """;
    });
    for (int i = 0; i < names.Length; i++)
    {
    Console.WriteLine(names[i]);
    }
    Console.ReadKey();
    }
    
    
    public static void ProStr(string[] name, DelProStr del)
    {
    for (int i = 0; i < name.Length; i++)
    {
    name[i] = del(name[i]);
    }
    }
    
    //public static string StrToUpper(string name)
    //{
    // return name.ToUpper();
    //}
    
    //public static string StrToLower(string name)
    //{
    // return name.ToLower();
    //}
    
    //public static string StrSYH(string name)
    //{
    // return """ + name + """;
    //}
    
    
    //public static void ProStToUpper(string[] name)
    //{
    // for (int i = 0; i < name.Length; i++)
    // {
    // name[i] = name[i].ToUpper();
    // }
    //}
    //public static void ProStrToLower(string[] name)
    //{
    // for (int i = 0; i < name.Length; i++)
    // {
    // name[i] = name[i].ToLower();
    // }
    //}
    //public static void ProStrSYH(string[] names)
    //{
    // for (int i = 0; i < names.Length; i++)
    // {
    // names[i] = """ + names[i] + """;
    // }
    //}
    
    
    }

    二、委托的概念:

          把一个方法当作参数传递给另一个方法去执行。

         

    //声明一个委托指向一个函数
    public delegate void DelSayHi(string name);
    class Program
    {
    static void Main(string[] args)
    {
    //DelSayHi del = SayHiEnglish;//new DelSayHi(SayHiEnglish);
    //del("张三");
    //Console.ReadKey();
    //Test("张三", SayHiChinese);
    //Test("李四", SayHiEnglish);
    //Console.ReadKey();
    }
    public static void Test(string name,DelSayHi del)
    {
    del(name); //调用
    }
    public static void SayHiChinese(string name)
    {
    Console.WriteLine("吃了么?" + name);
    }
    public static void SayHiEnglish(string name)
    {
    Console.WriteLine("Nice to meet you" + name);
    }
    }
    View Code

    作者:课间一起牛

    出处:https://www.cnblogs.com/mhg215/

    声援博主:如果您觉得文章对您有帮助,请点击文章末尾的【关注我】吧!

    别忘记点击文章右下角的【推荐】支持一波。~~~///(^v^)\~~~ .

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    如果您有其他问题,也欢迎关注我下方的公众号,可以联系我一起交流切磋!

     B站: 课间一起牛的B站         知乎:课间一起牛的知乎

    码云:课间一起牛的码云      github:课间一起牛的github

  • 相关阅读:
    浅谈sqlserver数据库优化(一)----开光篇
    代码生成器的意愿
    面试的那些小事。
    Access和Sql区别
    牢记!SQL Server数据库开发的二十一条注意点
    SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
    ResponseUtil jackson 转换问题;返回结果与 Bean 之间的转换,推荐使用convertValue
    阿里巴巴 ali1688 Date +0800的问题
    Spring Boot 全局异常。RestControllerAdvice,ControllerAdvice
    controller 层 date 类型的参数,SpringBoot自动转换 dateformat
  • 原文地址:https://www.cnblogs.com/mhg215/p/8570577.html
Copyright © 2020-2023  润新知