C#-複数の値を返す

まず以前使った、引数を参照渡しして書き換えてしまう方法。

void hoge(ref int x, ref string y)
{
  //hogehoge
}

ところが実際に使用するにあたって少しだるいところがある。引数として渡すx,yは関数に渡す前に初期化する必要がある(しないとコンパイル通らない)。関数内で上書きするような処理になっていた場合、その初期化は完全に無駄だ。あと、カッコ悪い。
必ず関数内で値を代入することが保証されているならoutキーワードを使えばその手間は省略できる。

void hoge(out int x, out string y)
{
//x = 23;
//y = "uooooo";
}

int num;
string str;
hoge(num, str);

返り値をまとたクラス、構造体を作ってもよいが、メモリ食うのでほどほどにしないといけない。
値をセットしたdynamic型、object型を返すようにすれば、めんどくさいクラス構造体定義はしないでよくなる。
おわり