方法
“方法”是包含一系列语句的代码块,方法可以有返回值,如果没有返回值,则应该在方法名称前冠以 void 表示无返回值。
关于方法请参见 C# 方法-参数、C# 方法-返回值。
本文写得有点复杂,要快速了解,可先参考:一个简明的 C# 事件示例。
事件
在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { Car car = new Car(); car.OnOilWarning += new OilEventHandler(OilWarning); //关联事件 car.FillOil(5); car.Startup(); } public void OilWarning(object sender, OilEventArgs e) { MessageBox.Show("监测到了汽车油量异常,当前油量为:" + e.OilMass); } } //事件代理,可以理解为这个事件要传送什么内容 //事件参数我们使用自己写的 OilEventArgs
// 注意:只要你喜欢,你完全可以自定义参数,可以不要 sender,
// 可以不要参数,参数也不一定非得继承自 EventArgs。 public delegate void OilEventHandler(object sender, OilEventArgs e); //事件参数 public class OilEventArgs : System.EventArgs { private int _oilMass = 0; //油量 public int OilMass { get { return _oilMass; } } public OilEventArgs(int oilMass) { _oilMass = oilMass; } } //汽车类,包含事件成员 //当启动汽车时,如果油量少于某一个值,将会触发事件 public class Car { private int _oilMass = 0; //油量 public event OilEventHandler OnOilWarning; //定义事件成员,事件名称为 OnOilWarning //给汽车加油 public void FillOil(int oilMass) { _oilMass = oilMass; } //启动汽车 public void Startup() { if (_oilMass < 10) { OnOilWarning(this, new OilEventArgs(_oilMass)); } } }
事件关键词:delegate、event
public delegate void OilEventHandler(object sender, OilEventArgs e);
public event OilEventHandler OnOilWarning; //定义事件成员,事件名称为 OnOilWarning