C#中的事件還真是有點(diǎn)繞啊,以前用JavaScript的我,理解起來還真是廢了好大勁!剛開始還真有點(diǎn)想不明白為什么這么繞,想想和JS的區(qū)別,最后終于恍然大悟!

C#中事件繞的根本原因:

  1. C#的方法,它不是一個類型,它只是其它類型的成員;

  2. 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)
            {
         &
        
		

網(wǎng)友評論