c#委托把方法当成参数

简介: //定义委托,它定义了可以代表的方法的类型 public delegate void GreetingDelegate(string name); /// /// 用英文打招呼 /// /// ...
 //定义委托,它定义了可以代表的方法的类型
        public delegate void GreetingDelegate(string name);

        /// <summary>
        /// 用英文打招呼
        /// </summary>
        /// <param name="name"></param>

        private void EnglishGreeting(string name)
        {
            Console.WriteLine("Morning, " + name);
        }

        /// <summary>
        /// 用中文打招呼
        /// </summary>
        /// <param name="name"></param>

        private void ChineseGreeting(string name)
        {
            Console.WriteLine("早上好, " + name);
        }

        //注意此方法,它接受一个GreetingDelegate类型的方法作为参数
        /// <summary>
        /// 委托(代理的方法)
        /// </summary>
        /// <param name="name"></param>
        /// <param name="markGreeting"></param>

        private void GreetPeople(string name, GreetingDelegate MakeGreeting)
        {
            MakeGreeting(name);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Delegate方式一:
            //GreetPeople("Jimmy Zhang", EnglishGreeting);
            //GreetPeople("张子阳", ChineseGreeting);
            //Console.ReadKey();

            //Action方式二:
            GreetPeopleAction("Jimmy Zhang", (s) =>
            {
                Console.WriteLine("Morning, " + s);
            });

            GreetPeopleAction("张子阳", (s) =>
            {
                Console.WriteLine("早少好, " + s);
            });

            Console.ReadKey();
        }

        /// <summary>
        /// Action委托作为参数
        /// </summary>
        /// <param name="name"></param>
        /// <param name="action"></param>
        public void GreetPeopleAction(string name, Action<string> action)
        {
            action(name);
        }

 

目录
相关文章
|
10月前
|
JSON C# 数据格式
【Azure Function】C#独立工作模式下参数类型 ServiceBusReceivedMessage 无法正常工作
Cannot convert input parameter 'message' to type 'Azure.Messaging.ServiceBus.ServiceBusReceivedMessage' from type 'System.String'.
202 73
|
开发框架 .NET 程序员
C# 去掉字符串最后一个字符的 4 种方法
在实际业务中,我们经常会遇到在循环中拼接字符串的场景,循环结束之后拼接得到的字符串的最后一个字符往往需要去掉,看看 C# 提供了哪4种方法可以高效去掉字符串的最后一个字符
1094 0
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
242 65
|
JSON 程序员 C#
使用 C# 比较两个对象是否相等的7个方法总结
比较对象是编程中的一项基本技能,在实际业务中经常碰到,比如在ERP系统中,企业的信息非常重要,每一次更新,都需要比较记录更新前后企业的信息,直接比较通常只能告诉我们它们是否指向同一个内存地址,那我们应该怎么办呢?分享 7 个方法给你!
440 2
|
C# UED SEO
C# 异步方法async / await任务超时处理
通过使用 `Task.WhenAny`和 `Task.Delay`方法,您可以在C#中有效地实现异步任务的超时处理机制。这种方法允许您在指定时间内等待任务完成,并在任务超时时采取适当的措施,如抛出异常或执行备用操作。希望本文提供的详细解释和代码示例能帮助您在实际项目中更好地处理异步任务超时问题,提升应用程序的可靠性和用户体验。
518 3
|
存储 C#
【C#】大批量判断文件是否存在的两种方法效率对比
【C#】大批量判断文件是否存在的两种方法效率对比
374 1
|
C#
C#的方法的参数传递
C#的方法的参数传递
165 0
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
236 0
|
2月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
166 19
|
3月前
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
498 0