In Visual Basic ci sono due tipi principali di procedure: Sub e Function. La principale differenza è che Sub non restituisce valori, mentre Function restituisce sempre un valore di un tipo specificato.
Sub è utilizzato per eseguire azioni (ad esempio, modificare stato, visualizzare a schermo, lavorare con file) quando non è necessario restituire un risultato.
Function è utilizzato quando è necessario restituire un valore (ad esempio, calcoli, ottenere il risultato di una logica).
Esempio:
Sub ShowMessage(ByVal message As String) MsgBox(message) End Sub Function Square(ByVal x As Integer) As Integer Square = x * x End Function ' Applicazione: ShowMessage("Ciao!") Dim result As Integer result = Square(5) ' result = 25
Qual è la differenza tra una procedura Sub e una Function in VB6, e si può usare l'operatore Return all'interno di Sub?
Risposta corretta: In VB6 l'operatore Return è utilizzato solo in Function. In Sub si può usare Exit Sub per uscire dalla procedura, ma non si può utilizzare Return con un valore. Molti confondono Return ed Exit, ma svolgono compiti diversi.
Sub ExampleSub() ' Return ' Errore: non è permesso in Sub Exit Sub ' Corretto End Sub Function ExampleFunction() As Integer ExampleFunction = 5 ' oppure ' Return 5 ' Permesso in VB.NET End Function
Storia
Nel progetto uno degli sviluppatori ha usato Sub invece di Function, dimenticando che doveva restituire un valore. Alla fine, il valore calcolato non veniva salvato da nessuna parte, la logica si è rotta, i test non sono andati a buon fine.
Storia
In una grande applicazione Windows Forms, Sub è stato utilizzato per la validazione dei valori. I dati dovevano cambiare a seconda del risultato, ma Sub non poteva restituire un valore booleano. A causa di ciò, la validazione non ha funzionato, ci sono stati errori nei calcoli.
Storia
Un principiante ha cercato di utilizzare l'operatore Return all'interno di Sub, come in altri linguaggi di programmazione, il che ha causato l'impossibilità di compilare l'applicazione. Hanno perso diverse ore alla ricerca della causa, finché non si sono ricordati che in Sub si usa Exit Sub, mentre Return è solo in Function.