C#のrefキーワードについての話。(値渡し・参照渡し)
こんにちは。みなみんです。
C#入門シリーズの続きです。
今回は「ref」キーワードについて記事にしました。
目次
値渡しと参照渡し
値渡し
まず、サンプルをご覧ください。(Gist)
いたって普通ですよね。これが「値渡し」です。
参照渡し
こちらが今回のメインです。
サンプルをご覧下さい。(Gist)
このように、変数に代入する事なく値が入っていますよね。
これは「ref」を付けた引数は、「参照渡し」によって変数が参照されているので、関数内で代入されると参照した変数にも代入されるからです。
そして、関数を呼び出して引数を指定する際も「ref」を付加しましょう。
また、参照する変数は宣言後には初期値を代入しておく必要があります。
初期化だけ行った変数を参照してしまうとエラーになります。(Gist)
outキーワード
先ほどの「参照渡し」の「ref」キーワードを使っていたが、初期値の無い変数を参照はできなかった。だが、「out」キーワードを使えば解決できます。
ただし、outを付加した引数は必ず関数内で代入する操作が必要です。
サンプルをご覧ください。(Gist)
inキーワード
これは参照した変数を読み取り専用にします。つまり、代入が出来ません。
サンプルをご覧ください。(Gist)
このように、代入をしてしまうとエラーになります。
最後に
アイデア次第では色んな方法がありそうですね。
この記事に誤りがあるかもしれません。その辺はご了承ください。
本記事で紹介されている方法・手法はあくまでも個人的なものです。