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