c# +=运算符 是什么意思 比如这个是什么意思

namespace关于一杯水的委托{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}p... namespace 关于一杯水的委托
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
IDrink mydrink = new IDrink("凉开水", "");
mydrink.Idrink += new IDrink.Drink(wateronly); //这个 +=是什么意思
mydrink.execu();
}

private void wateronly(string water, string mainthing)
{
MessageBox.Show("你喝了" + water);
MessageBox.Show("你加了" + mainthing);
}

}
}

namespace 关于一杯水的委托
{
class IDrink
{
public string _water = "";
public string _mainthing = "";

public delegate void Drink(string water, string mainthing);
public Drink Idrink = null;
public IDrink(string water, string mainthing)
{
_water = water;
_mainthing = mainthing;

}
public void execu()
{
MessageBox.Show("取出杯子");
Idrink(_water, _mainthing);
MessageBox.Show("享用中");
MessageBox.Show("清洗并归放原位");

}
}
}
展开
 我来答
luorigezhu
2011-06-03 · TA获得超过448个赞
知道小有建树答主
回答量:273
采纳率:0%
帮助的人:293万
展开全部
“+=”在这里是被重载过的操作符,作用就是将一个委托实例添加(注册)到事件列表中。可以把事件列表当作一个“委托链”或“委托列表”来看待。当事件发生时,就会通过在此“委托列表”中注册的这些委托实例来调用相应的方法,从而就会实现“事件通知”这样的功能。其实这就是“观察者模式”在C#中的实现方式。
  至于“委托链”,程序员一般不需要关心C#是如何做到这一点的。如果对其实现方式有兴趣,可以参考java中事件的实现方式,但是不推荐这样做——因为在java中你得手工实现事件列表;而且java中没有委托,是使用接口来实现事件的,初学者可能需要晕个两三天才能看明白,反而不利于C#学习。
  另,C#中的术语可能有些易混淆的地方,比如“委托”,既可以指委托类,也可以指委托类生成的一个实例。
  在委托类的实例中包含了个方法的引用——相当于方法的一个标签,这个标签中包含了对方法调用的一些限制,以防止调用方法时意外出错;而且还可以将这些“标签”作为参数传来传去,便于方法的调用。
  以“委托实例名(参数1,参数2)”的语法调用方法时,实际上就是调用“委托实例中引用的方法(参数1,参数2)”。
===================================================
编译器会根据事件来自动推断委托类型并实例化相应的委托类,因此:
mydrink.Idrink += new IDrink.Drink(wateronly);
上面这行代码写成:
mydrink.Idrink += wateronly;
这个样子也是可行的。
桐令紫3
2011-06-03 · TA获得超过119个赞
知道答主
回答量:84
采纳率:0%
帮助的人:58.4万
展开全部
利用委托给它注册一个事件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式