【发布时间】:2026-02-06 21:15:02
【问题描述】:
我正在学习 C# 中的事件/委托。我能否询问您对我选择的命名/编码风格的看法(摘自 Head First C# 书籍)?
明天我要教一个朋友这个问题,并试图想出最优雅的方式来解释这些概念。 (认为理解一门学科的最佳方法是尝试并教授它!)
class Program
{
static void Main()
{
// setup the metronome and make sure the EventHandler delegate is ready
Metronome metronome = new Metronome();
// wires up the metronome_Tick method to the EventHandler delegate
Listener listener = new Listener(metronome);
metronome.OnTick();
}
}
public class Metronome
{
// a delegate
// so every time Tick is called, the runtime calls another method
// in this case Listener.metronome_Tick
public event EventHandler Tick;
public void OnTick()
{
while (true)
{
Thread.Sleep(2000);
// because using EventHandler delegate, need to include the sending object and eventargs
// although we are not using them
Tick(this, EventArgs.Empty);
}
}
}
public class Listener
{
public Listener(Metronome metronome)
{
metronome.Tick += new EventHandler(metronome_Tick);
}
private void metronome_Tick(object sender, EventArgs e)
{
Console.WriteLine("Heard it");
}
}
n.b.代码重构自http://www.codeproject.com/KB/cs/simplesteventexample.aspx
【问题讨论】: