まず以前使った、引数を参照渡しして書き換えてしまう方法。
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型を返すようにすれば、めんどくさいクラス構造体定義はしないでよくなる。
おわり