C#委托本质探索 二、方法变量测试

// delegate 一个类型定义关键字,用来定义一个抽象方法.
// 实例化这个类型的过程中需要传入实例指针.
// 实例化的结果就是得到一个方法的指针.

// 使用抽象方法,就是为了把方法实例定义成变量用的.
// 围绕这个观点,做几个测试.
// 测试1.抽象方法做为普通变量使用

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

namespace ConsoleApplication1
{
    delegate string 抽象方法(string 参数);

    class SecondTest
    {
        public 抽象方法 方法变量;

        public SecondTest()
        {
            //想用这个方法变量必须先实例化,那就在类实例化时实例化方法变量
            方法变量 = new 抽象方法(this.方法实体);
        }

        //这里定义一个实体,遵循delegate类型实例化过程必须要传入实例,这段代码是必须要存在的
        public string 方法实体(string 方法参数)
        {
            StringBuilder 工作内容 = new StringBuilder();
            if (方法参数 == "运营魔兽世界")
            {
                工作内容.AppendLine("安排设备采购");
                工作内容.AppendLine("招募客服,上岗培训");
                工作内容.AppendLine("广告宣传");
                工作内容.AppendLine("游戏上市");
                工作内容.AppendLine("推出活动");
                工作内容.AppendLine("…………");
            }
            else if (方法参数 == "处理业内竞争")
            {
                工作内容.AppendLine("调查竞争对手");
                工作内容.AppendLine("展开斗争");
            }
            return 工作内容.ToString();
        }

    }

    // 上面的例子,将"方法变量"和"方法实体"都公布为public.使他们在实例test2中都可以看到.
    // 方法实体被外部调用这很简单,也完全可以理解.对象的方法就是用来被调用的.
    // 方法变量被公布了?!!咱们用变量不是只为了定义一次以后只读取.而是要用他存储值记录变化的.
    // 一说到变化,那方法变量值的变化有什么效果呢?
    // 应该是方法变量指针指向变化,也就是指向别的方法了.
    // 咱们再用一个例子来演示这种变化.
}

// 调用方法

            string 执行结果;
            SecondTest test2 = new SecondTest();
            //直接调用方法实体
            执行结果 = test2.方法实体("运营魔兽世界");
            Console.WriteLine(执行结果);
            //调用方法变量
            执行结果 = test2.方法变量("处理业内竞争");
            Console.WriteLine(执行结果);

posted @ 2010-12-12 22:03  规定  阅读(322)  评论(0编辑  收藏  举报