如果你有同一个类的不同实例,例如' FootballTeam',并且你想让这个FootballTeam类的另一个实例知道发生了什么,那么最好的方法是什么?
事件不会真正起作用我猜...
例如:
FootballTeam A = new FootballTeam();
FootballTeam B = new FootballTeam();
// now A needs to let B know about it's manager change
// manager is a property inside this class...
Run Code Online (Sandbox Code Playgroud)
事件可以发挥作用:
FootballTeam A = new FootballTeam();
FootballTeam B = new FootballTeam();
A.ManagerChanged += B.OnOtherManagerChanged;
Run Code Online (Sandbox Code Playgroud)
事件的定义——当其属性值更改时FootballTeam调用其OnManagerChanged方法:Manager
class FootballTeam
{
public event EventHandler ManagerChanged;
protected virtual void OnManagerChanged(EventArgs e)
{
EventHandler handler = ManagerChanged;
if (handler != null)
handler(this, e);
}
public void OnOtherManagerChanged(object sender, EventArgs e)
{
FootballTeam otherTeam = (FootballTeam) sender;
// A manager changed on a different FootballTeam instance
// ...do something here
}
}
Run Code Online (Sandbox Code Playgroud)