2010-03-30 11 views
8

Sono un programmatore VB che lavora in C#. Ho imparato come creare e generare eventi in VB e sto scoprendo che non è fatto allo stesso modo in C#. Qualcuno ha trovato un articolo che mi aiuterà a capire come fare gli eventi in C# e forse spiegherò perché è diverso in VB.Qual è la differenza tra gli eventi in VB e C#?

Grazie

+0

Questa domanda spiega la differenza tra 'handle' nella sintassi degli eventi VB.Net e C# http://stackoverflow.com/questions/794332/migrating-handles-from-vb-net-to-c – MarkJ

+0

Grazie MarkJ apprezzo molto il tuo aiuto –

risposta

0

La differenza è principalmente sintattica.

Vedere this riferimento pratico sulle differenze.

Il gestore eventi in VB.NET viene dichiarato con la parola chiave Handling aggiunta alla firma del gestore eventi. In C# è necessario registrarlo con +=.

In VB.NET si richiama l'evento con RaiseEvent, in C# si chiama direttamente il delegato.

+0

Grazie per il tuo aiuto Oded –

0

Lettura da:

http://msdn.microsoft.com/en-us/library/aa645739(VS.71).aspx

Un evento in C# è un modo per una classe di fornire notifiche ai clienti di quella classe quando qualche cosa interessante accade a un oggetto. Il maggior numero di familiare per gli eventi è nelle interfacce utente grafiche ; tipicamente, le classi che rappresentano i controlli in l'interfaccia hanno eventi che sono notificati quando l'utente fa qualcosa al controllo (ad esempio, fare clic sul pulsante ).

Gli eventi, tuttavia, non devono essere utilizzati solo per le interfacce grafiche. Gli eventi forniscono un modo generalmente utile per gli oggetti per segnalare le modifiche di stato che possono essere utili ai client dell'oggetto . Gli eventi sono un elemento importante per la creazione di classi che possono essere riutilizzate in un numero grande di programmi diversi.

Fare riferimento all'articolo per il resto.

0

È possibile trovare un buon riferimento generale per alcune differenze chiave nella sintassi here. Cerca "eventi" per arrivare a quella sezione.

Le differenze principali sono che VB richiede l'utilizzo di alcune parole chiave piuttosto che l'addizione/sottrazione per collegare eventi, ma offre una parola chiave per collegare automaticamente una routine a un evento. E quando si passa un delegato, è necessario utilizzare una parola chiave AddressOf inutile. (Ci scusiamo per l'editoriale, ma penso che la parola chiave causi più confusione di quella che salva!)

+0

Grazie per il tuo commento Patrick –

+0

@M nessun problema. era . . . vale un upvote? :) –

1

La differenza principale è la sintassi utilizzata. Sotto, usano esattamente gli stessi meccanismi all'interno del CLR.

Tuttavia, VB.NET fornisce sintassi speciale tramite WithEvents e Handles, che consente di fare:

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# non fornisce un equivelent - tutti gli eventi devono essere esplicitamente sottoscritto tramite event +=, che è più simile AddHandler dichiarazione di VB.NET.

+0

Grazie per il vostro aiuto Reed –

Problemi correlati