欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#事件用法實(shí)例淺析

 更新時間:2015年05月16日 12:01:54   作者:永遠(yuǎn)愛好寫程序  
這篇文章主要介紹了C#事件用法,以實(shí)例形式分析了C#中事件的定義、觸發(fā)及處理相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了C#事件用法。分享給大家供大家參考。具體分析如下:

EventHandler<TEventArgs>的定義如下
public delegate void EventHandler<TEventArgs>(object sender,TEventArgs e) where TEventArgs:EventArgs
第一個參數(shù)必須是object類型(是一個對象,包含事件的發(fā)送者)
第二個參數(shù)是T類型(即泛型),定義了一個T的約束,它必須派生自基類EventArgs
CardInfoEventArgs 就派生自基類EventArgs

舉例

#region 測試事件1
//EventArgs類
public class CardInfoEventArgs : EventArgs
{
public string Car { get; private set; }
public CardInfoEventArgs(string car)
{
  this.Car = car;
}
}
//觸發(fā)事件的類
public class CarDealer
{
public event EventHandler<CardInfoEventArgs> NewCardInfo;
public void NewCar(string car)
{
  Console.WriteLine("CarDealer,new car{0}", car);
  //在觸發(fā)事件之前,需要檢查委托NewCardInfo是否不為空。
  //如果沒有訂閱處理程序,委托就是空
  if (NewCardInfo != null)
  {
 NewCardInfo(this, new CardInfoEventArgs(car));
  }
}
}
//處理事件的類
public class Consumer
{
private string name;
public Consumer(string name)
{
  this.name = name;
}
//處理事件的方法
public void NewCarIsHere(object sender, CardInfoEventArgs e)
{
  Console.WriteLine("{0}:car {1} is new", name, e.Car);
}
}
#endregion
private void button_測試事件1_Click(object sender, EventArgs e)
{
  CarDealer dealer = new CarDealer();
  Consumer michael = new Consumer("Michael");
  dealer.NewCardInfo += michael.NewCarIsHere; //訂閱事件
  dealer.NewCar("寶馬");
  Consumer nick = new Consumer("Nick");
  dealer.NewCardInfo += nick.NewCarIsHere; //訂閱事件
  dealer.NewCar("奔馳");
  dealer.NewCardInfo -= michael.NewCarIsHere; //取消訂閱事件
  dealer.NewCar("奧迪");
}

測試結(jié)果截圖

希望本文所述對大家的C#程序設(shè)計有所幫助。

相關(guān)文章

  • c#集合快速排序類實(shí)現(xiàn)代碼分享

    c#集合快速排序類實(shí)現(xiàn)代碼分享

    這篇文章主要介紹了C#實(shí)現(xiàn)集合排序類,大家參考使用吧
    2013-12-12
  • C# HttpClient上傳文件并附帶其它參數(shù)方式

    C# HttpClient上傳文件并附帶其它參數(shù)方式

    這篇文章主要介紹了C# HttpClient上傳文件并附帶其它參數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解LINQ入門(上篇)

    詳解LINQ入門(上篇)

    這篇文章主要介紹了詳解LINQ入門(上篇),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • c#中虛函數(shù)的相關(guān)使用方法

    c#中虛函數(shù)的相關(guān)使用方法

    若一個實(shí)例方法聲明前帶有virtual關(guān)鍵字,那么這個方法就是虛方法。
    2013-02-02
  • C#實(shí)現(xiàn)順序棧和鏈棧的代碼實(shí)例

    C#實(shí)現(xiàn)順序棧和鏈棧的代碼實(shí)例

    今天小編就為大家分享一篇關(guān)于的C#實(shí)現(xiàn)順序棧和鏈棧的代碼實(shí)例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 基于WPF實(shí)現(xiàn)面包屑控件的示例代碼

    基于WPF實(shí)現(xiàn)面包屑控件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何基于WPF實(shí)現(xiàn)簡單的面包屑控件,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2023-05-05
  • C#多線程編程中的鎖系統(tǒng)基本用法

    C#多線程編程中的鎖系統(tǒng)基本用法

    這篇文章主要介紹了C#多線程編程中的鎖系統(tǒng)基本用法,本文講解了lock、Monitor、mutex、Semaphore等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • C#動態(tài)加載組件后如何在開發(fā)環(huán)境中調(diào)試詳解

    C#動態(tài)加載組件后如何在開發(fā)環(huán)境中調(diào)試詳解

    這篇文章主要給大家介紹了關(guān)于C#動態(tài)加載組件后如何在開發(fā)環(huán)境中調(diào)試的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • C#生成漂亮驗證碼完整代碼類

    C#生成漂亮驗證碼完整代碼類

    本文主要介紹了C#生成漂亮驗證碼的完整代碼類。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • C#實(shí)現(xiàn)判斷操作系統(tǒng)是否為Win8以上版本

    C#實(shí)現(xiàn)判斷操作系統(tǒng)是否為Win8以上版本

    這篇文章主要介紹了C#實(shí)現(xiàn)判斷操作系統(tǒng)是否為Win8以上版本,本文講解了利用C#獲取OS的版本號、利用反射獲取當(dāng)前正在運(yùn)行的程序的版本信息、 利用C#判斷當(dāng)前操作系統(tǒng)是否為Win8系統(tǒng)等內(nèi)容,需要的朋友可以參考下
    2015-06-06

最新評論