2012-04-13 5 views
42

sto attraversando un po 'vecchio codice VB e mi imbatto in definizioni di funzioni come questi -Qual è la differenza tra Sub e Function in VB6?

Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer 

Private Sub cmdCustomerList_Click() 

Qual è la differenza?

+0

in Excel solo 'Subs' sono disponibili per l'assegnazione alle forme nella assegnazione msgbox macro. – SAm

risposta

98

La funzione restituisce il valore, Sub non lo fa. È così semplice.

+0

Ok. Grazie per la risposta. – CodeBlue

+8

+1. Il manuale [dice] (http://msdn.microsoft.com/en-us/library/aa266305 (v = vs.60) .aspx): "Come una procedura Function, una procedura Sub è una procedura separata che può argomenti, eseguire una serie di istruzioni e modificare il valore dei relativi argomenti, tuttavia, a differenza di una procedura Function, che restituisce un valore, non è possibile utilizzare una procedura Sub in un'espressione. " Sembra un po 'prolisso, ma è perché ti stanno dicendo alcune informazioni aggiuntive su cosa può fare un Sub e una Funzione. – MarkJ

0

funzione in VB

  • una funzione deve restituire un valore/s
  • Sintassi: funzione privata fun_name (argomento/s (opzionale)) come return_type (intero, stringa ..) Valore di ritorno end Function
  • fun_name (argomenti (opzionale)) è sufficiente per la funzione di chiamata

sub in VB

  • un sub, non c'è bisogno di essere di ritorno di qualsiasi valore/s
  • Sintassi: sub nome_richiesta privato (argomento/s (opzionale))

    fine sub

  • nome_richiesta (argomenti (opzionale)) è sufficiente per chiamare la funzione
4

In funzione è possibile restituire valori come booleano, stringa e altri tipi di dati.

ma sub non restituisce nulla. esegue solo il codice e le istruzioni che diamo. Questi sono anche considerati come metodi

Sub è utilizzato anche negli eventi di controllo e anche questi eventi non restituiscono alcun valore.

ad esempio l'evento click di un pulsante di comando: sub privata cmd_click()

end sub

11

Una funzione può essere utilizzata anche in un'espressione. Una subroutine non può. Le funzioni possono migliorare la leggibilità del codice rispetto a una subroutine.

Ecco un esempio di come una funzione può aumentare la leggibilità:

If AccountIsLocked("JJones") then Msgbox("This account is locked") 

questa funzione sarebbe definito da qualche parte

public function AccountIsLocked(UserId as string) as boolean 
    dim usr = uow.AccountRepository.UserInfo(UserId) 
    return usr.locked 
end function 

Ecco lo stesso esempio, ma codificato con una subroutine:

CheckIfAccountLocked("JJones") 

e altrove questo sottotitolo è definito:

public sub CheckIfAccountLocked(UserId) 
     if uow.AccountRepository.UserInfo(UserId).locked then 
      msgbox("Account is locked") 
     end if 
end sub 

Si noti inoltre che il controllo del valore è separato dall'azione - questo contribuisce alla separazione dei compiti. La funzione si presterebbe alla riutilizzabilità.

Con VB6 ci sono alcune regole dispari che governano la parentesi. Se non ci sono parametri per un sottotitolo, la parentesi non è necessaria (penso che Visual Studio potrebbe rimuovere la parentesi). Un modo per aggirare questo è aggiungere la parola chiave "Chiama" prima del tuo sottotitolo.

Call CheckIfAccountLocked() 

vs

CheckIfAccountLocked 
+0

La migliore risposta qui – Hydro

3

Sono entrambe le sezioni di scrivere il codice comunque una funzione deve restituire un valore. Ad esempio se hai un programma in cui una complicata procedura matematica deve essere eseguita un numero di volte in cui devi semplicemente fare una funzione e avere il complicato codice matematico lì e ogni volta che devi fare il calcolo puoi semplicemente chiamare la funzione . Spero che ciò non abbia aiutato se l'ho spiegato bene.

2

Qual è la differenza tra Sub e Function in VB6?

"sub" può eseguire qualche azione. "sub" non restituisce alcun valore.

Esempio:

Form_Load()

"funzione" possono anche eseguire qualche azione ma restituisce anche qualche valore al punto da cui è stato chiamato. cioè "funzioni restituiscono un valore, spesso basata su una variabile"

Esempio:

Val(), FormatPercentage().

-1

Una funzione contiene dati e codice. Ma una subroutine contiene solo codice, ma non dati.

-1
  1. La sintassi delle funzioni sarà Funzione ... La funzione di fine e per Sott. Sarà Sub ... Fine sott.
  2. Le funzioni possono o non possono avere oggetti, ma sotto non avere oggetti
  3. funzioni sono riutilizzabili in cui sub non lo fa
  4. funzioni possono restituire valli ma sub dosen't
  5. funzioni possono avere repository oggetto ma sub non ha
  6. estensione di funzioni è .qfl dove per sub è .vba