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(执行结果);