Du kan returnere en "List(Of T)" der T er en type som String, Double, etc. T kan til og med være din egen klasse hvis du ønsker det.
Tåpelig eksempel under. En funksjon tar imot en array av tall og dobler dem, og disse nye tallene blir returnert i en List(Of Double).
Function DoubleTheseNumbers(ByVal numbers() As Double) As List(Of Double)
Dim ret As New List(Of Double)
For Each d In numbers
ret.Add(d * 2)
Next
Return ret
End Function
Sub SomeSub()
Dim nums() As Double = {0.1, 0.2, 0.3}
Dim lst As List(Of Double) = DoubleTheseNumbers(nums)
For Each d In lst
Console.WriteLine(d)
Next
End Sub
... vil selvfølgelig gi:
Hvis du sender inn en tom array av tall, får du en tom List(Of Double) tilbake, og dermed blir ingenting skrevet ut.
Det nydelige med denne måten å gjøre det på er at lister kan brukes sammen med Linq. Og Linq er fantastisk!
Hvorfor er Linq så genialt? Jo, fordi du kan gjøre spørringer på (bl.a.) lister, og det er opphavet til Lamda-funksjoner. Dermed kan du f.eks. redusere koden i "SomeSub" over til dette (der vi har kombinerer List, Linq og Lambda-funksjoner):
DoubleTheseNumbers({0.1, 0.2, 0.3}).ForEach(Sub(x) Console.WriteLine(x))
.... som også vil gi: