因此,我正在理解事件和代表。使用特定示例瞭解C#中的代表和事件
我全面理解代表的用法。 關注代表的唯一事情是,是否可以將代理配置爲以任何方式使用與事件無關的函數... 如果是,我該如何編寫代表定義函數的邏輯?(我想這樣的功能其實並沒有多大意義,但知道的很好。)
至於事件......我很難理解它。我知道一個事件是一個函數,當代碼發生某些事情時會被執行。 但是,我沒有得到創建事件的過程。部分。
對於這個問題,我會通過加里·威洛比使用一個答案:https://stackoverflow.com/a/803528/1104766 它被張貼在從中我試圖瞭解這整個主題相關的問題。
我沒有在上面的例子中得到什麼:
MyObject.OnMaximum += new MyEventHandler(MaximumReached);
首先,你怎麼能創建委託的實例,而當它需要通過2只1變量?必須有我丟失的東西...
關於此行的第二件事情是,new ...()
實例是添加到OnMaximum
功能駐留在MyObject
這是MyClass
一個實例 - 究竟是OnMaximum
如果這樣的事情可以做到?它從來沒有真正定義過!
if(OnMaximum != null) {
OnMaximum(this, new MyEventArgs("You've entered " +
value.ToString() +
", but the maximum is " +
Maximum.ToString()));
}
至於這一部分,OnMaximum
的調用,但它的邏輯從來沒有真正在代碼的任何地方定義的,所以可能是什麼結果?很明顯,我猜這是文本「你輸入了.............」,但我的問題是更具體的,真正發生的值與函數/事件收到?
爲了清楚起見,我在BOLD中標記了所有的問題。
上海,我知道這個問題一般已經發布了幾次。
請注意,這個具體的問題是指由另一個成員寫的答案,這裏提出的問題是特定於這個例子。這就是爲什麼這些答案不能在谷歌中找到。
儘管我記錄之前做過搜索,但我確實試圖理解,但我認爲例子是理解某些東西的最佳方式,特別是當我對英語CS詞彙缺乏知識時。
+1這個解釋.. – ridoy
所以你的'myevent'和'myotherevent'等於我鏈接到的問題中聲明的'MaximumReached'函數/監聽器?這是否意味着當一個事件被調用像'someHandler(int num)'時,它會觸發它的所有偵聽器並將它們傳遞給可用的變量?這也意味着,所有分配給處理程序的監聽器都會收到/返回相同類型/數量的變量,對吧?有道理 - 謝謝!但是,我仍然不完全理解你的最後一個例子......如果你能夠提供一個有/無委託的例子(即使是理論方法),它也能真正幫助我。 – Asaf
@xTCx,我已經擴展了我的答案。希望它有助於:) –