完整声明方式:
public delegate void TestEventHandler(); public class Subject { private TestEventHandler m_testEventHandler; public event TestEventHandler Click { add { this.m_testEventHandler += value; } remove { this.m_testEventHandler -= value; } } public void Method() { if (m_testEventHandler != null) { m_testEventHandler(); } } }
简化声明方式:
public delegate void TestEventHandler(); public class Subject { public event TestEventHandler Test; public void Method() { if (Test != null) { Test(); } } }
Test并非是TestEventHandler类型的字段,仅仅是语法糖的一种表现。
之所以使用event,而不是直接使用TestEventHandler类型的字段,是因为封闭外部的调用。