zoukankan      html  css  js  c++  java
  • C#委托本质探索 三、方法变量调用

    // 测试2.方法变量值的改变
    // 这里使用测试2的delegate不再造新的.
    //delegate string 抽象方法(string 参数);

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

    namespace ConsoleApplication1
    {
        class ThirdTest
        {
            public void DoTest()
            {
                原始对象 对象实例 = new 原始对象();

                string 执行结果;
                //测试直接的方法调用
                执行结果 = 对象实例.原方法实体("运营魔兽世界");
                Console.WriteLine(执行结果);


                //测试方法变量调用
                执行结果 = 对象实例.方法变量("处理业内竞争");
                Console.WriteLine(执行结果);


                //改变方法变量值
                对象实例.方法变量 = new 抽象方法(this.新的方法实体);
                执行结果 = 对象实例.方法变量("工作交接");
                Console.WriteLine(执行结果);
            }

            private string 新的方法实体(string 方法参数)
            {
                StringBuilder 工作内容 = new StringBuilder();
                if (方法参数 == "工作交接")
                {
                    工作内容.AppendLine("上交资料");
                    工作内容.AppendLine("打包走人");
                }
                return 工作内容.ToString();
            }

        }

        class 原始对象
        {
            public 抽象方法 方法变量;

            public 原始对象()
            {
                //为方法变量实例化
                方法变量 = new 抽象方法(this.原方法实体);
            }

            //定义原始实体
            public string 原方法实体(string 方法参数)
            {
                StringBuilder 工作内容 = new StringBuilder();
                if (方法参数 == "运营魔兽世界")
                {
                    工作内容.AppendLine("安排设备采购");
                    工作内容.AppendLine("招募客服,上岗培训");
                    工作内容.AppendLine("广告宣传");
                    工作内容.AppendLine("游戏上市");
                    工作内容.AppendLine("推出活动");
                    工作内容.AppendLine("…………");
                }
                else if (方法参数 == "处理业内竞争")
                {
                    工作内容.AppendLine("调查竞争对手");
                    工作内容.AppendLine("展开斗争");
                }
                else
                {
                    工作内容.AppendLine("传入参数异常");
                }
                return 工作内容.ToString();
            }


        }

        // 到这里我们已经看到了方法变量值被改变的一些效果.
        // 把一个方法变量向外公布,当变量值改变时再次调用就指向改变后的方法调用.
        // 变量操作符除了=,还有+=, -= 等方式.
        // 用到方法变量上,就表现为方法地址指针的重定向、多指向和指向移除.
        // 上面一直关注方法变量向外公布,在"原始对象"自身没有使用到方法变量.
        // 下面的例子增加对象内部使用方法的情况.
    }

    // 测试代码

                ThirdTest test3 = new ThirdTest();
                test3.DoTest();

  • 相关阅读:
    xml和json笔记
    Ajax开发技术介绍与实战练习
    MATLAB学习(4)——min
    MATLAB学习(2)——zeros
    MATLAB学习(1)——ordfilt2
    vim的基本命令
    VS2015 闪退问题
    Error (10028): Can't resolve multiple constant drivers for net "mydata[14]" at sd_read.v(207)
    自动识别设备
    Internal Error: Sub-system: CUT, File: /quartus/db/cut/cut_post_syn_util.cpp, Line: 709 name_to_atom_map[iname] == 0
  • 原文地址:https://www.cnblogs.com/ww960122/p/1903952.html
Copyright © 2011-2022 走看看