C#中的事件還真是有點(diǎn)繞啊,以前用JavaScript的我,理解起來(lái)還真是廢了好大勁!剛開(kāi)始還真有點(diǎn)想不明白為什么這么繞,想想和JS的區(qū)別,最后終于恍然大悟!
C#中事件繞的根本原因:
C#的方法,它不是一個(gè)類(lèi)型,它只是其它類(lèi)型的成員;
C#是一個(gè)強(qiáng)類(lèi)型的語(yǔ)言,定義方法時(shí),它的參數(shù)必須指定類(lèi)型,如
public void add(int n){...};
所以,一個(gè)方法不能直接作為其它方法的參數(shù),把一個(gè)方法名作為參數(shù),無(wú)法指定類(lèi)型啊,會(huì)報(bào)錯(cuò)!那我就想啊,既然不能直接傳入,那我傳入整個(gè)對(duì)象總可以吧,通過(guò)傳進(jìn)來(lái)的對(duì)象來(lái)執(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) { &