我是一名VB程序員,我的方式進入C#。我學會了如何在vb中創建和引發事件,並發現它在C#中沒有以相同的方式完成。有沒有人遇到過一篇文章,可以幫助我理解如何在C#中完成事件,並解釋爲什麼它在VB中不同。VB和C#中的事件有什麼區別?
謝謝
我是一名VB程序員,我的方式進入C#。我學會了如何在vb中創建和引發事件,並發現它在C#中沒有以相同的方式完成。有沒有人遇到過一篇文章,可以幫助我理解如何在C#中完成事件,並解釋爲什麼它在VB中不同。VB和C#中的事件有什麼區別?
謝謝
這是否對您有幫助?
的區別主要是語法。
請參閱this有關這些差異的便捷參考。
VB.NET中的事件處理程序是用附加到事件處理程序簽名的Handling
關鍵字聲明的。在C#中,您需要使用註冊它+=
。
在VB.NET中,您使用RaiseEvent
調用事件,在C#中直接調用委託。
感謝您的幫助Oded – 2010-03-30 19:09:03
從閱讀:
http://msdn.microsoft.com/en-us/library/aa645739(VS.71).aspx
在C#中的事件是一類以 提供通知的 客戶端類時,一些有趣的事情發生了 爲對象的一種方式。熟悉用於事件的最多 是 圖形用戶界面;通常, 代表 中控件的類別 當用戶對控件執行某些操作時(例如,單擊 按鈕),接口的事件通知爲 。
但是,事件不需要僅用於圖形界面的 。事件 提供了一種通常有用的方式,用於對象發出狀態變化信號,該變化對於該對象的客戶端可能是有用的。事件是用於創建類 的重要的 構建塊,其可以在不同程序的大量 中重用。
請參閱其餘文章。
關於語法中一些關鍵差異的快速通用參考可以在here找到。搜索「事件」以查看該部分。
主要區別是,VB要求你使用一些關鍵字,而不是加法/減法要連接的事件,但給你一個處理關鍵字自動連接一個例行的事件。當傳遞委託時,您必須使用無意義的AddressOf關鍵字。 (對於編輯而言,很抱歉,但我認爲這個關鍵字比它節省了更多的困惑!)
感謝您的評論Patrick – 2010-03-30 19:08:43
@M沒問題。是的。 。 。值得讚賞嗎? :) – 2010-03-31 01:47:08
主要區別在於使用的語法。在下面,他們在CLR中使用完全相同的機制。
但是,VB。NET通過WithEvents
和Handles
提供特殊的語法,讓你做:
Dim WithEvents button1 As Button
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyButton.Click
' Handle button click
End Sub
C#不提供equivelent - 所有事件必須通過event +=
明確訂閱,這更像是VB.NET的AddHandler
聲明。
感謝您的幫助裏德 – 2010-03-30 19:09:19
這個問題解釋了VB.Net中的'handles'和C#事件語法之間的區別http://stackoverflow.com/questions/794332/migrating-handles-from-vb-net-to-c – MarkJ 2010-03-30 17:09:23
感謝MarkJ真的很感謝你的幫助 – 2010-03-30 19:07:02