??????????

?????????????

public class Cat
{
public void ScreamOut(string msg)
{
mouse.RunAway();
}
}
public class Mouse
{
public void RunAway()
}

??????????????????????????????????????е??????е???????????????дè??ScreamOut ??????????????????

????????е??????????????????è???????????????????????????????????????????????????????????????? ???????????????????????????????????????????????

?????????????£?

????è??

public class Cat
{
public string Name { get; set; }
public delegate void ScreamEventHandler(object sender?? ScreamEventArgs e);
public event ScreamEventHandler Scream;
public virtual void OnScream(ScreamEventArgs e)
{
if (this.Scream != null)
{
this.Scream(this?? e);
}
}
public void ScreamOut(string msg)
{
ScreamEventArgs e = new ScreamEventArgs(msg);
OnScream(e);
}
}