C#中的事件還真是有點(diǎn)繞啊,以前用JavaScript的我,理解起來還真是廢了好大勁!剛開始還真有點(diǎn)想不明白為什么這么繞,想想和JS的區(qū)別,最后終于恍然大悟!
C#中事件繞的根本原因:
C#的方法,它不是一個類型,它只是其它類型的成員;
C#是一個強(qiáng)類型的語言,定義方法時,它的參數(shù)必須指定類型,如
public void add(int n){...};
所以,一個方法不能直接作為其它方法的參數(shù),把一個方法名作為參數(shù),無法指定類型啊,會報錯!那我就想啊,既然不能直接傳入,那我傳入整個對象總可以吧,通過傳進(jìn)來的對象來執(zhí)行該方法,如下代碼:
using System;namespace MyEventTest{ public class SomeClass { public void Start(int a) { Console.WriteLine("Go:{0}",a); } } public class Publisher { public void StartEvent(int a, SomeClass sc) { if (sc != null) { &