.net column
.NET開発者のためのブログメディア

データ

C#のout修飾子で参照渡しを行う方法。ref修飾子との違いとは?

2020年03月10日

C#でメソッドの引数に、out修飾子やref 修飾子を使用すると、参照渡しで引数を渡すことができます。開発の現場で利用する機会が多い out修飾子とref修飾子を解説します。

PG
そもそも参照渡しって何ですか?
PM
変数への参照(メモリ上のアドレス)を、メソッドの引数に渡すことを言います。メソッドの中で変数の値を変更すると、元の変数も変更されます。

out修飾子でメソッドの引数を参照渡し

C#のout 修飾子を使用して、メソッドの引数を宣言すると、変数の参照渡しができます。参照渡しをすると、メソッド呼び出し元の変数の値を、呼び出し先のメソッド中で変更できます。

具体的なコード例を見てみましょう。以下のサンプルコードは、引数で渡された2つの値を加算した結果を、outで宣言した変数に格納しています。

実行結果
参照渡し実行結果

out引数は呼び出し先メソッドで必ず初期化が必要

out修飾子を使用する際の注意点として、out修飾子の引数はメソッド内で必ず初期化(値の割り当てを)を行う必要があります。初期化を行なっていない場合、コンパイル時にエラーになります。

ref修飾子を使った参照渡し

out修飾子の他に、C#のref修飾子でもメソッドの引数を参照渡しすることが可能です。out修飾子とは異なり、ref修飾子は呼出元の変数の値を、読み取り/書き込みできます。また、refで宣言されたメソッドの引数に渡す変数は、必ず初期化する必要があります。

ref修飾子を使ったコードを見てみましょう。以下のサンプルコードは、引数で渡された変数に、2を加算するadd関数を、メイン関数から2回読んだ時の変数値の変化を見るコードです。

ref修飾子とout修飾子の参照渡しの違い

ここまでの解説の通り、C#での参照渡には、out修飾子とref修飾子を使用する方法があります。では、どのような時に使い分けるのでしょうか。

ref修飾子とout修飾子の違いには、次の2つがあります。それぞれの特徴を理解し、適切な使い分けをしましょう。

    • ・メソッド呼び出し元の変数の初期化

out修飾子 → 不要
ref修飾子 → 必須

    • ・メソッド呼び出し先での変数の初期化(変数への値の割り当て)

out修飾子 →必須(必ず割り当てする必要あり)
ref修飾子 → 任意(どちらでもよい)

PG
outとref修飾子の違い、使い分けの方法がよく分かりました。
PM
outとref修飾子を使いこなせると便利ですから、使ってみてくださいね。

C#のoutとref修飾子を理解して効率的なプログラムを

C#のoutとref修飾子の使い方や、その違いについて解説してきました。参照渡しをマスターすると、より効率的なプログラムが書けるようになります。この記事を参考に是非覚えておいてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags