黑马程序员技术交流社区
标题:
关于委托的一些理解
[打印本页]
作者:
_xixi_
时间:
2014-7-10 01:46
标题:
关于委托的一些理解
本帖最后由 _xixi_ 于 2014-7-11 13:11 编辑
以前看过委托,书本的一个例子给我的感觉是为什么非得去定义一个委托去调用一个方法,直接通过 实例名.方法 ,不是结果也一样;最近看了一些视频,有了新的一些想法,当一个行为会带动另外一个行为的时候,你要怎么用代码实现?所谓的一个行为带动另外一个行为,比如,你向银行申请贷款,申请成功后,银行发一条短信告诉你审批通过,看下面代码分析。
让我疑惑,觉得跟 实例名.方法 没什么区别的例子:
namespace Delegate
{
delegate void D(int x);
class C
{
public static void M1(int i)
{
Console.WriteLine("C.M1:" + i);
}
}
class Test
{
static void Main()
{
D cd = new D(C.M1);
cd(-1);//输出“C.M1:-1”,结果与C.M1(-1)一样!!
//C.M1(-1);
Console.ReadKey();
}
}
}
复制代码
向银行申请贷款的例子:
namespace Delegate
{
delegate void ApplyL(Bank bank, int money); //申请贷款
delegate void GiveM(Person person, int money); //银行反馈的信息
class Person
{
string name = "张三";
public string Name
{
get { return name; }
set { name = value; }
}
//申请贷款
public void ApplyLoan(Bank bank, int money)
{
Console.WriteLine("{0}向{1}银行提出申请,贷款{2}元!", this.Name, bank.Name, money);
//银行反馈信息,调用Bank的方法
GiveM giveM = new GiveM(bank.GiveMessage);
giveM(this, money);
}
}
class Bank
{
string name = "XX";
public string Name
{
get { return name; }
set { name = value; }
}
//接受贷款请求
public void GiveMessage(Person person, int money)
{
if (person is Person)
{
Console.WriteLine("{0},你在{1}银行贷款{2}元的申请成功!", ((Person)person).Name, this.Name, money);
}
}
}
class Program
{
static void Main(string[] args)
{
Person aPerson = new Person();
Bank aBank = new Bank();
ApplyL applyL = new ApplyL(aPerson.ApplyLoan); //向银行申请贷款
applyL(aBank, 100000);
Console.ReadKey();
}
}
复制代码
以上只是我的一些想法,请大家指教,多多交流!其实我还想知道在实际应用中委托多用来做什么?
a.jpg
(14.9 KB, 下载次数: 16)
下载附件
2014-7-10 01:44 上传
贷款操作运行结果
作者:
_xixi_
时间:
2014-7-11 13:18
应该理解错了→__→
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2