Welcome

首页 / 软件开发 / .NET编程技术 / 白话说.net事件和委托

白话说.net事件和委托2010-11-20 cnblogs ejiyuan在学习C#中时候很早就听到过委托这个概念,我读了许多文章都没能理解它 的含义,园子里好多是这么解释的:“委托相当与c++函数指 针...”

本人没有学过C++,只模糊的记得在学基础的时候,对 指针的理解是这样的,指针是一个本身不存放值的变量,它里面存放的是另一个 变量的内存地址。所以使我联想到了值类型变量和引用类型变量。

更是 糊里糊涂的,在后来的工作学习中,渐渐的理解了它的含义。

问题:

1,委托到底是个什么东东。

2,什么时候能用到委托。

声明:这里,我们不去探讨委托的原理,内部机制等等...只是想把我对委托的 理解,说出来...内容也仅供参考,欢迎改为前辈拍砖。

下面用白话和一 个很白的例子说明问题。

定义一个类,里面有属性,方法,有的方法是 通用的,我们可以实现它的代码。有的方法需要在具体的调用时才能确定它应该 完成的功能,所以这里定义一个委托,具体的执行代码在调用时候再实现。这样 就能根据实现代码的不同完成不同的操作。觉得是多态的一种表示形式。

还不明白,那看下面这个很“白”的例子:

我们的需 求是这样的

某饭店 老板让 购物员去买菜,要买白菜和土豆,最后算出 总价格

老板说:“白菜的价格如果大于3.5元,就扣除白菜的杂质 ,扣除方法是 每1公斤减掉0.3公斤的杂质再买”

购物员:“ 那土豆也是用这个规则么?”

老板说:“土豆按什么规则, 扣不扣杂质你自己决定”

购物员暗想:“先去菜市场看看价 格如果土豆的价格大于2.5元就扣杂质。。。”

这里姑且 买菜怎么 买法有买方决定

下面实现我们的代码

//买菜类
public class BuyVegetable
{
double CabbageMoney;
double MurphyMoney;

Code

/// <summary>
/// 买白菜
/// </summary>
/// <param name="price"></param>
/// <param name="amount"></param>
/// <returns></returns>
public void BuyCabbage(double price, double amount)
{
//这里老板制定的买白菜的方案
// 如果买白菜的价格小于3,就不去杂,如果大于3去去杂
if (price < 3)
{
CabbageMoney = price * amount;
}
else
{
CabbageMoney = (price - 0.3) * amount;
}
}

因为只知道要买土豆,具体怎么买现在决定不了,所以只能 定 一个 事件。