メソッドの戻り値を配列にすることでメソッドから複数の値を返すことができます。 しかし、例えば意味の異なる値を配列でひとまとめにして返すようにすると、格納されている値の意味があいまいになり、また呼び出し側では戻り値を配列から展開する必要があります。
このような場合は、配列よりもoutパラメータ(VBではByRef引数)を使ったほうがより適切です。
商と剰余をoutパラメータ・ByRef引数に格納して返すメソッド
Imports System
Class Sample
' xとyの商と剰余を求めるメソッド
' 商は第3引数のByRef引数、剰余は第4引数のByRef引数に格納する
Shared Sub DivRem(ByVal x As Integer, ByVal y As Integer, ByRef div As Integer, ByRef remn As Integer)
div = x \ y
remn = x Mod y
End Sub
Shared Sub Main()
' 7÷3の商と剰余を同時に求めたい
Dim div As Integer, remn As Integer
DivRem(7, 3, div, remn)
' メソッドの呼び出し後、変数divとremnに結果が格納される
End Sub
End Class
outパラメータ・ByRef引数はメソッドの戻り値と併用することもできます。 実際、.NETで用意されている商と剰余を求めるMath.DivRemメソッドでは、商は戻り値として、剰余はoutパラメータで返されるようになっています。
Math.DivRemメソッドについては数学関数 §.積・商と剰余 (BigMul, DivRem)を参照してください。