C 實現客戶訂餐的事件完整宣告方式

2021-09-25 20:54:11 字數 1591 閱讀 5780

1、我們應該宣告乙個customer的類作為訂餐事件的擁有者,類中應該有bill屬性和paythebill方法;

2、然後我們應該宣告乙個waiter的類作為訂餐事件的響應者;

3、應該自定義乙個名為order的委託型別(在委託型別中我們應該定義乙個customer的變數,和乙個實參變數);

4、定義乙個傳遞事件資訊的類ordereventargs,將產品的資訊定義出來;

5、作為基礎的委託型別已經有了,我們來宣告乙個事件並寫在customer裡面,宣告乙個private委託型別的字段用來儲存和引用事件處理器,再宣告事件,宣告乙個事件處理器的新增器;

6、至此我們已經擁有了事件的其中三個部分,事件擁有者、事件響應者、事件,則我們應該在主函式中訂閱這個事件,從而在waiter中新增事件處理器;

using system;

using system.threading;

namespace eventsample_1_

}

/*事件資訊用事件名字+「eventargs」來命名,用來傳遞事件訊息的類*/

public class ordereventargs:eventargs//規定某個類用途時用於"eventargs"使用的話,就將這個類派生於「eventargs」這個類

//點的什麼菜

public string size //點的大份還是小份

}/*委託是事件的底層基礎,事件是委託的上層建築

自定義宣告乙個委託型別,與類同級,如果乙個委託是為了宣告某個事件,這個委託將用「eventhandle」作為字尾

customer點菜將設為第乙個引數

第二個引數用來訪問菜名資訊*/

public delegate void ordereventhandler(customer customer, ordereventargs e);

/*「eventhandle的用意有三:」

1、這個委託專門用來宣告事件的

2、表明了用來約束事件處理器的

3、這個委託未來建立出來的例項時專門儲存事件處理器的*/

/*事件的擁有者customer

調整訪問級別為public

保持訪問級別一致*/

public class customer

remove

}public double bill //記錄使用者在點菜方面花了多少錢

public void paythebill()//方法,列印使用者將要支付多少錢

",this.bill);

}/*為customer新增方法*/

public void walkin()

public void sitdown()

public void think()

if (this.ordereventhandle!=null)//檢查事件是否為空

}public void action()

}public class waiter//事件的響應者

",e.dishname);

double price = 10;

switch (e.size)

customer.bill += price;

}}

C 中事件的完整宣告,事件與委託欄位的區別

1 宣告乙個委託 如果要宣告乙個事件,首先要有乙個委託來約束事件和事件處理器的簽名 宣告乙個委託 public delegate void ordereventhander customer customer,ordereventargs e 構造委託的引數 ordereventargs publi...

C 事件的實現

事件是c 中乙個重要的內容,msdn上有乙個自定義事件的演示示例。我看了半天有點暈,所以新建了乙個winform工程新增了乙個按鈕,然後找出呼叫的程式,一對比做了乙個類似的示例,就明白了。看 有時候比看文件來得更快。所以還是一貫的原則,來幹的,不來稀的。csharp using system nam...

標準的事件和委託宣告寫法 C

標準的事件和委託宣告寫法 定義委託 public delegate void picchangehandler object sender,picchangeeventargs args 宣告切換事件 public static event picchangehandler picchange 呼叫...