国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

每天進步一點--c#基礎鞏固,事件、委托

2019-11-17 03:22:05
字體:
來源:轉載
供稿:網友

每天進步一點--c#基礎鞏固,事件、委托

要想技術有所提高,就是把有些問題真正的弄懂弄明白,我從事C#開發(fā)兩年了,一直對事件委托等概念一知半解,有時候博客園上看看別的大牛的文章,看看懂了就過去了,時間長了又忘了,真正理解還是要自己動手弄些例子,搞懂這些概念,我寫文章也是出于這個目的,希望和大家一塊學習進步。

我還是拿經典的例子來說明:貓叫,老鼠跑,主人吵醒了。

我們用事件的方法來實現,把貓叫作為觸發(fā)事件的方法,綁定在這個事件上的方法都會被觸發(fā)。

先用網上大家的例子:

    public class Cat    {        /// <summary>        /// 貓叫方法            /// </summary>        public void Miao()        {            Console.WriteLine("喵喵喵喵喵喵");            if (OnMiao != null)                OnMiao(this,EventArgs.Empty);        }        /// <summary>        /// 貓叫事件        /// </summary>        public event EventHandler OnMiao;    }

  

 public class Master    {        public Master()        {        }        /// <summary>        /// 主人被叫醒了        /// </summary>        public void Wake()        {            Console.WriteLine("死貓叫啥叫,吵我睡覺!!!");        }    }

  

public class Mouse    {        public Mouse()        {        }        /// <summary>        /// 老鼠跑        /// </summary>        public void Run()        {            Console.WriteLine("貓來了,快跑!!!!");        }    }

  客戶端代碼

    class PRogram    {        static void Main(string[] args)        {            Cat cat = new Cat();            Mouse mouse = new Mouse();            Master master = new Master();            cat.OnMiao += delegate { mouse.Run(); };            cat.OnMiao += delegate { master.Wake(); };            cat.Miao();        }    }

  這個辦法可以實現,貓叫,老鼠跑,主人醒。但如果我想拓展下呢,主人叫有好幾只貓,每只貓叫的聲音都不一樣,主人吵醒后要知道哪只貓把他吵醒了。

現在我們改寫Cat類

/// <summary>    /// 我們自定義事件數據    /// </summary>    public class CatEventArgs : EventArgs    {        public string CatName { get; set; }    }    public class Cat    {        /// <summary>        /// 定義事件委托        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        public delegate void CatEventHandler(object sender, CatEventArgs e);        public Cat()        {        }        /// <summary>        /// 貓叫        /// </summary>        public void Miao()        {            Console.WriteLine("喵喵喵喵喵喵");            if (OnMiao != null)            {                CatEventArgs catEventArgs = new CatEventArgs();                catEventArgs.CatName = "Tom";                OnMiao(this, catEventArgs);            }        }        /// <summary>        /// 貓叫完成事件        /// </summary>        public event CatEventHandler OnMiao;    }

  客戶端代碼

    class Program    {        static void Main(string[] args)        {            Cat cat = new Cat();            Mouse mouse = new Mouse();            Master master = new Master();            cat.OnMiao += cat_OnMiao;            cat.OnMiao += delegate { master.Wake(); };            cat.Miao();        }        static void cat_OnMiao(object sender, CatEventArgs e)        {            Console.WriteLine(string.Format("{0}貓在叫",e.CatName));        }    }

  這樣就知道哪只貓叫了,關鍵是我們自定義了CatEventArgs,這個類繼承了EventArgs,可以傳遞事件信息,自定義信息,并且自定義事件委托public delegate void CatEventHandler(object sender, CatEventArgs e);

自己的小例子,大牛勿笑;新的一年祝大家心想事成,更上一層樓

--每天有點進步


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 霍城县| 翁牛特旗| 乐业县| 景东| 寿阳县| 章丘市| 班玛县| 保定市| 徐汇区| 柳河县| 尼木县| 鄂尔多斯市| 永兴县| 格尔木市| 石首市| 临颍县| 绥阳县| 新竹市| 广西| 宜川县| 信阳市| 松滋市| 阿拉善左旗| 丽水市| 山西省| 深水埗区| 洱源县| 徐汇区| 巴中市| 芜湖市| 五指山市| 吕梁市| 连云港市| 吴旗县| 清远市| 卢龙县| 丰镇市| 霍城县| 铜陵市| 尼勒克县| 调兵山市|