//C# delegate ro event 規範寫法</p><p>//.NET Framewrok事件設計準則</p><p>//1>.事件命名準則應使用PascalCasing命名方式<br />//2>.聲明delegate時,使用void類型當作傳回值</p><p>delegate void PubComputerEventHandler();//沒有帶參數的delegate類型</p><p>// .NET FrameWrok 事件接受參數一律命名為 (sender , e)<br />delegate void PubLifeEventHandler( object sender , PubEventArgs e);//帶參數的delegate類型.<br />//定義事件提供資料類,對類以EventNameArges進行命名,從System.EventArgs派生該類,然後添加事件成員。<br />//如:<br />public delegate void EventNameHalder(object sender , EventNameEventArgs e);<br />///.NET FrameWrok事件設計準則<br />/// 在引發事件的類中提供一個受保護的方法。以OnEventName進行命名。在該方法中引發事件。<br />Protected vritual void OnEventName(EventAges e)<br />{<br />if(EventName != null)<br />{<br />EventName(this,e);<br />}<br />}</p><p>//下面寫一個完整的Demo</p><p>namespace Demospace<br />{<br />public class DemoClass<br />{<br />/// defautl Constructor<br />public DemoClass(){}<br />delegate void PubComputerEventHandler(object sender , PubEventArgs e); //聲明delagate<br />event PubComputerEventHandler ComputerEventArgs; //聲明event<br />protected vritual void OnComputer(PubEventArgs e)<br />{<br /> PubComputerEventHandler handler = ComputerEventArgs;//防止線程同步問題<br /> if(handler != null)<br /> {<br /> handler(this,e);<br /> }<br />}</p><p>/// 自訂基類<br />public class PubEventArges : System.EventArgs<br />{<br />private readonly string name<br />public PubEventArgs(string Name)<br />{<br /> this.name=Name;<br />}<br />}<br />} // End class</p><p>} //End namespace