c#委托把方法当成参数(实例讲解)

时间:2021-07-29 04:38:14 

静态方法代理:


public delegate void DoGreeting(string name);

class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            //方法名当成参数传给委托类型调用
            MarkGreeting("张三", GreetingEnglish);
            MarkGreeting("李四", GreetingChinese);
        }

        /// <summary>
        /// 委托(代理的方法)
        /// </summary>
        /// <param name="name"></param>
        /// <param name="markGreeting"></param>
        private static void MarkGreeting(string name, DoGreeting markGreeting)
        {
            markGreeting(name);
        }

        /// <summary>
        /// 用英文打招呼
        /// </summary>
        /// <param name="name"></param>
        private static void GreetingEnglish(string name)
        {
           Console.WriteLine(name+"hello!");
        }

        /// <summary>
        /// 用中文打招呼
        /// </summary>
        /// <param name="name"></param>
        private static void GreetingChinese(string name)
        {
            Console.WriteLine(name+"你好!");
        }
    }

实例方法代理:


 public delegate void DoGreeting(string name);

    public class Greeting
    {
        /// <summary>
        /// 委托(代理的方法)
        /// </summary>
        /// <param name="name"></param>
        /// <param name="markGreeting"></param>
        public void MarkGreeting(string name, DoGreeting markGreeting)
        {
            markGreeting(name);
        }

        /// <summary>
        /// 用英文打招呼
        /// </summary>
        /// <param name="name"></param>
        public  void GreetingEnglish(string name)
        {
            Console.WriteLine(name + "hello!");
        }

        /// <summary>
        /// 用中文打招呼
        /// </summary>
        /// <param name="name"></param>
        public void GreetingChinese(string name)
        {
            Console.WriteLine(name + "你好!");
        }
    }

    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Greeting greetingObj = new Greeting();

            greetingObj.MarkGreeting("张三", greetingObj.GreetingEnglish);
            greetingObj.MarkGreeting("李四", greetingObj.GreetingChinese);

        }

标签:c#,委托,参数
0
投稿

猜你喜欢

  • SpringBoot中使用Session共享实现分布式部署的示例代码

    2022-10-17 04:27:54
  • Java环境配置图文教程(推荐)

    2023-09-17 11:27:42
  • java 根据经纬度获取地址实现代码

    2023-09-05 04:54:50
  • C#字符串如何提取数值(带小数点)

    2023-01-27 06:10:25
  • Java多线程之同步工具类Exchanger

    2022-07-05 03:50:54
  • Spring如何使用注解的方式创建bean

    2022-01-29 03:45:49
  • 浅谈Android轻量级的数据缓存框架RxCache

    2023-12-22 14:01:30
  • Java获取json数组对象的实例讲解

    2023-08-24 14:55:28
  • Springboot基于websocket实现简单在线聊天功能

    2023-12-21 08:58:18
  • eclipse报错 eclipse启动报错解决方法

    2023-04-28 08:43:49
  • Android Activity通用悬浮可拖拽View封装的思路详解

    2023-08-08 15:31:48
  • Android开发高级组件之自动完成文本框(AutoCompleteTextView)用法示例【附源码下载】

    2021-09-14 08:23:54
  • springboot+springmvc+mybatis项目整合

    2023-07-16 03:13:57
  • java的多线程高并发详解

    2022-06-28 10:12:06
  • c#方法中调用参数的值传递方式和引用传递方式以及ref与out的区别深入解析

    2023-04-07 03:43:25
  • C# 基于udp广播收集局域网类所有设备信息

    2022-04-28 00:17:23
  • Java logback日志的简单使用

    2023-07-15 01:32:33
  • C#中使用反射遍历一个对象属性及值的小技巧

    2021-12-10 18:15:43
  • Android线程中Handle的使用讲解

    2023-04-04 17:43:56
  • Java double转BigDecimal的注意事项说明

    2022-12-13 14:44:38
  • asp之家 软件编程 m.aspxhome.com