Minaminの日記

趣味を記事にしてる。

C#のrefキーワードについての話。(値渡し・参照渡し)

f:id:Minamin1234:20210821185856p:plain

こんにちは。みなみんです。
C#入門シリーズの続きです。

 

今回は「ref」キーワードについて記事にしました。

目次

 

値渡しと参照渡し

値渡し

まず、サンプルをご覧ください。(Gist)

いたって普通ですよね。これが「値渡し」です。

 

参照渡し

こちらが今回のメインです。
サンプルをご覧下さい。(Gist)

このように、変数に代入する事なく値が入っていますよね。
これは「ref」を付けた引数は、「参照渡し」によって変数が参照されているので、関数内で代入されると参照した変数にも代入されるからです。

そして、関数を呼び出して引数を指定する際も「ref」を付加しましょう。

 

また、参照する変数は宣言後には初期値を代入しておく必要があります。
初期化だけ行った変数を参照してしまうとエラーになります。(Gist)

 

outキーワード

先ほどの「参照渡し」の「ref」キーワードを使っていたが、初期値の無い変数を参照はできなかった。だが、「out」キーワードを使えば解決できます。

ただし、outを付加した引数は必ず関数内で代入する操作が必要です。
サンプルをご覧ください。(Gist)

 

inキーワード

これは参照した変数を読み取り専用にします。つまり、代入が出来ません。
サンプルをご覧ください。(Gist)

このように、代入をしてしまうとエラーになります。

 

最後に

イデア次第では色んな方法がありそうですね。

 

 

この記事に誤りがあるかもしれません。その辺はご了承ください。

本記事で紹介されている方法・手法はあくまでも個人的なものです。