2011-07-01 63 views
5

作爲.NET和Silverlight的新手,我已經注意到Silverlight的很多教程(Tim Heuers Blog,Silverlight TV等)都在C#中。我知道VB和C#之間的一般區別通常是首選項。Silverlight - C#和VB.net事件處理程序之間是否存在性能差異?

但是我注意到的一個主要區別是C#和VB.NET處理事件的方式。這只是一個語法差異,或者是其中一個或另一個優化以更好地處理事件?例如,它們都被編譯爲相同的中間語言,但生成的代碼是否完全相同?看到Silverlight很大程度上依賴於此,我認爲這可能值得考慮。

考慮到這個論壇的專業知識,我想知道是否有人對此進行了研究或性能測試。

+0

你問是否在調用處理程序的方式上有所不同? – dbasnett

回答

2

生成的代碼可能與指令不一致,但總體效果相同。您不應該在該區域看到性能差異。

VB.NET有兩種語法事件 - AddHandler,這是一樣的C#的+=,並Handles,這僅僅是在構造函數中AddHandler語法糖。

+0

謝謝,這真的是我感興趣的東西。我不確定IL結果有多相同,只是它們是兼容的。 – ginman

+0

Handles關鍵字實際上爲屬性設置器創建代碼,該設置器將事件處理程序添加到對象/將其從前一個對象中刪除。 – rossisdead

2

他們都得到編譯爲IL(或在這種情況下Silverlight字節碼),應該執行完全相同。任何差異應該只是語法。

+0

請注意,某些語言提供了其他語言不具備的語言功能,因此不會具有相同的IL。就像C#的foreach和VB.Net的Select Case一樣(是的,它主要是一個開關,但它允許每種情況下的表達式而不是常量) –

+0

@Corey在你看來,你認爲C#的foreach是什麼? –

+0

我確實撤回了,看着它後,結果VB也有。我認爲有一點C#做了,VB沒有... –

相關問題