基本

[C#] メソッドへ引数を渡す際の『値渡し』と『参照渡し』の違い(ref)

今回は、C#でメソッドへ引数を渡す際の『値渡し』と『参照渡し』の違いについてご紹介します。

値渡し

メソッドへ値をコピーして渡すため、引数に指定した元の値は変化しません。

値渡しを行うために、呼び出されるメソッド側でキーワードを指定する必要はありません。

メソッド名(変数名)

 

サンプル

それではサンプルを見てみましょう。
Console.WriteLineを使って、値渡しでメソッドを実行した後の、引数に指定した変数の値をコンソールに出力します。

 

実行結果

上記を実行し、コンソールに表示された結果がこちらです。

実行結果

1

testメソッドを実行した後も、引数に指定した元の変数「a」の値は変化していないのがわかります。

 

参照渡し

メソッドへ値が入った場所(アドレス)を渡すため、メソッドの中で値が変化すると元の値も変更されます。

参照渡しを行うには、メソッドを呼び出す際と、呼び出されるメソッド側に「ref」キーワードを指定する必要があります。

【呼び出す際】

メソッド名(ref 引数)

【呼び出されるメソッド】

メソッド名(ref 変数名)

 

サンプル

それではサンプルを見てみましょう。
Console.WriteLineを使って、参照渡しでメソッドを実行した後の、引数に指定した変数の値をコンソールに出力します。

 

実行結果

上記を実行し、コンソールに表示された結果がこちらです。

実行結果

10

testメソッドを実行後、引数に指定した元の変数「a」の値も変化しているのがわかります。

 

最後に

C#で『メソッドへ引数を渡す際の「値渡し」と「参照渡し」の違い』についてのご紹介は以上です。

どなたかのお役に立てていれば幸いです。