この章では配列をメソッドに渡す方法について説明します。
では例をみてみましょう。
この例ではnumber配列をmaxメソッドに渡すので
配列を渡したら、メソッドの仮引数では
maxメソッドの機能は受け取った配列の要素の中で一番大きい数の添え字を返します。
for文の中のifで以下のような順番で大きさを比べています。
次の例では配列の要素をメソッドに渡して、その配列の値をメソッド内で変更した時に元の配列はどうなるのかについて説明します。
参照渡しと言いましても特別なことをするわけではなく、配列をメソッドに渡すだけです。
参照渡しでメソッドに配列を渡して、メソッド側でその配列のデータを書き換えると元の配列のデータまでが書き換わります。
普通の変数を値渡しでメソッドに送ってもメソッド側で書き換えることは出来ません。
例では配列の要素である
結果は以下の通りです。
次の例で呼び出し元の変数を値渡しで渡して、メソッド側でその変数の値を書き換えることができるのか見てみましょう。
int x = 99;
int y = 90;
をkakikae (x, y) ;の箇所でkakikaeメソッドに送っています。 そして、kakikaeメソッドでは 以下のように4を代入しています。
a=4;
b=4;
ここで変数に4を代入しても、 呼び出し元のint x 、int y の値は変更されずにそれぞれ 99、90のままです。
つまり呼び出し元から渡した変数の値をメソッド内で変更しても呼び出し元の変数の値は変化しません。
これが値渡しです。
しかし、値渡しを参照渡しに変更する方法がC#には備わっています。
実引数と仮引数に以下の例のように「ref」と言うキーワードを付けます。
では例をみてみましょう。
結果は以下の通りです。
refの付いた変数を渡す場合はその変数には何かしらの値が入っていないといけません。
しかし、値の入っていない変数をメソッドに渡したい場合はrefの代わりにoutを使用してください。outもrefと同じで参照渡しです。