zoukankan      html  css  js  c++  java
  • C#委托本质探索 七、方法变量作为函数参数传递

    // 将方法变量作为函数参数传递,又叫回调
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Text;

    namespace ConsoleApplication1.SeventhTest
    {
        class SeventhTest
        {
            public void DoTest()
            {
                领导 朱哥 = new 领导();
                下属 小薇 = new 下属();

                朱哥.增加任务(小薇.自己的工作, "运营魔兽世界");
                朱哥.处理任务();

                Console.ReadLine();
                朱哥.增加任务(小薇.自己的工作, "处理业内竞争");
                朱哥.处理任务();
            }

        }

        delegate string 委托任务(string 任务内容);

        class 领导
        {
            private Hashtable 任务列表;

            public void 增加任务(委托任务 一个任务, string 任务类型)
            {
                if(任务列表 == null)
                    任务列表 = new Hashtable();
                任务列表[任务类型] = 一个任务;
            }

            public void 处理任务()
            {
                foreach(DictionaryEntry 任务项 in 任务列表)
                {
                    string 结果 = ((委托任务)任务项.Value)((string)任务项.Key);
                    Console.WriteLine(结果);
                }
            }

        }

        class 下属
        {
            public string 自己的工作(string 任务内容)
            {
                StringBuilder 工作内容 = new StringBuilder();
                if (任务内容 == "运营魔兽世界")
                {
                    工作内容.AppendLine("安排设备采购");
                    工作内容.AppendLine("招募客服,上岗培训");
                    工作内容.AppendLine("广告宣传");
                    工作内容.AppendLine("游戏上市");
                    工作内容.AppendLine("推出活动");
                    工作内容.AppendLine("…………");
                }
                else if (任务内容 == "处理业内竞争")
                {
                    工作内容.AppendLine("调查竞争对手");
                    工作内容.AppendLine("展开斗争");
                }
                return 工作内容.ToString();
            }

        }

        // 上一例,领导将自己做的事情向外公开,下属对领导公开的事情做进一步处理.
        // 这个例子,领导接收外部的事情,并处理.
        // 一个是向外开放,一个是向内接收.
    }

  • 相关阅读:
    mockito测试final类/static方法/自己new的对象
    flink 1.11.2 学习笔记(5)-处理消息延时/乱序的三种机制
    linux查找操作
    分析MongoDB架构案例
    legend3---bootstrap modal框出现蒙层,无法点击modal框内容(z-index问题)
    legend3---laravel报419错误
    laravel自定义中间件实例
    laravel中间件Middleware原理解析及实例
    git: Failed to connect to github.com port 443: Timed out
    记忆规律
  • 原文地址:https://www.cnblogs.com/ww960122/p/1903960.html
Copyright © 2011-2022 走看看