2009-12-04 16 views
6

Mi piacerebbe conoscere i pro e i contro delle procedure di chiamata con Chiama parola chiave e senza chiamata in VB.NET?Quali sono i pro e i contro delle procedure di chiamata in VB.NET?

Private Sub ProOne() 
    // Code Are Here 
End Sub 

Private Sub Calling() 
    ProOne()   // I would like to know pros and cons of this 
    Call ProOne()  // And I would like to know pros and cons of this 
End Sub 

Grazie in anticipo a tutti.

risposta

10

Da here:

normalmente si usa l'istruzione Call per chiamare una procedura che non restituire un valore. Se la procedura restituisce un valore, l'istruzione Call lo scarta.

Non è necessario utilizzare l'istruzione Call quando si chiama una procedura . Tuttavia, migliora la leggibilità del tuo codice.

Quindi, in sostanza, ProOne() e Call ProOne() sono semanticamente equivalenti.

12

ci sono professionisti, e non ci sono contro.

La parola chiave Call è una parola chiave eredità dai vecchi dialetti VB.

In VB.net non ha alcun significato, ed è lo zucchero syntatic.

2

Dalla documentazione

trasferisce il controllo a una funzione, Sub, o libreria a collegamento dinamico (DLL) procedura. [Chiama] ProcedureName [ (ArgumentList)]

così,

Normalmente si utilizza l'istruzione Chiama per chiamata di una procedura che non restituisce un valore. Se la procedura restituisce un valore , l'istruzione Call lo scarta.

Non è necessario utilizzare l'istruzione Call quando si chiama una procedura. Tuttavia, migliora la leggibilità del codice.

+7

"Tuttavia, migliora la leggibilità del codice". Dipende dal gusto personale, non posso rispettarlo personalmente e non usarlo mai :) –

3

Anche se tecnicamente equivalenti, vorrei discutere contro l'utilizzo di "Chiama". Quando si passa da VB6 a VB.Net, è importante rendersi conto che sono lingue completamente diverse che devono essere scritte in modi completamente diversi. Sfortunatamente, Microsoft voleva fornire supporto agli sviluppatori VB6, e lo hanno fornito aggiungendo funzionalità che imitano la funzionalità VB6, ma è significativamente inferiore all'equivalente .Net.

taglio tutti i legami con uno qualsiasi dei reduci VB6 farà sviluppatori smettere di usare questi bit il più rapidamente possibile, e portano ad una migliore uscita del codice.

+0

Mentre sono d'accordo con te, non riesco a capire perché qualcuno disposto a tagliare tutti i legami non userebbe solo C# invece di VB.NET. La familiarità della sintassi è praticamente l'unica cosa che VB.NET ha intenzione di fare. – Dan

6

Un uso interessante che ho trovato (R# suggerito), era quando è necessario creare un'istanza solo per chiamare un singolo metodo e quindi contrassegnarlo per la garbage collection.
Non so se lo tengo comunque.

Per esempio

Call (new MyType()).MySub() 

equivalente di

dim anInstance = new MyType 
anInstance.MySub 
+0

Non utilizzare l'istanza predefinita essere più succinta? Io sono semplicemente 'MyType.MySub()' – Michael

+0

@ Michael, che suggerisce che useresti un metodo statico. Il metodo non è statico. Penso che VB lo permetta davvero, ma è piuttosto confuso. Sicuramente quando vieni da un C# bgnd. –

+0

@BorisCallens Se non stai trasmettendo nulla al costruttore, non vedo come l'istanziazione di una nuova istanza sia meno complicata dell'utilizzo dell'istanza predefinita. – Dan

Problemi correlati