.net column

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

C#における配列の戻り値とは?メソッド作成時の注意点を解説

2020年07月22日
SE
C#で配列の戻り値を使用するときのポイントはありますか?
PM
返却する配列の要素数は何個でも構いませんが、メソッド側でnullを返却しないようにするなどの注意点があります。

C#における配列の戻り値について

今回は、C#における配列の戻り値について説明します。C#ではメソッドの戻り値を配列にできます。その際、配列の要素数に決まりはなく、参照渡しで返却されます。

C#における配列の戻り値に興味のある方はぜひご覧ください。

配列の戻り値

C#ではメソッドの戻り値を配列にできます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このように、C#ではメソッドの戻り値を配列にできます。

配列の要素数は何個でもよい

上記で戻り値を配列にするプログラムを紹介しました。その際、返却する配列の要素数は何個でも構いません。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

makeArray(5);とすると、要素数5の配列が返却されます。
makeArray(10);とすると、要素数10の配列が返却されます。

このように、返却する配列の要素数は何個でも構いません。

nullを返却しない

先ほどのサンプルプログラムで、makeArray(0);とするとどうなるでしょうか。

実行結果は以下のようになります。

NullReferenceExceptionが発生しました。

nullを返却すると、呼び元で例外の考慮が必要になります。メソッド側でnullを返却しないようにすることで、呼び元でのNullReferenceException例外の考慮が不要になります。

実際のソースコードを見てみましょう。

NullReferenceExceptionは発生しなくなりました。

要素0の配列を返却することで、呼び元でのNullReferenceException例外の考慮が不要になります。C#で配列を返却するメソッドにおいて、nullを返却しないようにしましょう。

配列戻り値は参照渡し

C#では、配列戻り値は参照渡しになります。

それを確かめるための、実際のソースコードを見てみましょう。

実行結果は以下のようになります。

ArrayTestクラスから配列を返却し、戻り値の配列を変更した後にArrayTestクラスの配列を参照しています。

この結果から、C#での配列戻り値は参照渡しであることが分かります。

配列戻り値の値渡し

C#において、配列の戻り値を値渡しにするにはどうすればよいでしょうか。配列の戻り値をディープコピーすることで、値渡しが実現できます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

DeepCopyには様々な方法がありますが、今回はSystem.Array.Copyを使用しました。このように、配列の戻り値をディープコピーすることで、値渡しが実現できます。

SE
配列の戻り値を値渡しにするには配列の戻り値をディープコピーすることで、値渡しが実現できるのですね。
PM
はい。そのとおりです。実際のソースコードを参考にして、自分でもソースコードを書いてみましょう。

C#のソースコードを書いてみよう

C#ではメソッドの戻り値を配列にできます。その際、配列の要素数に決まりはなく、参照渡しで返却されます。

ぜひご自身でC#のソースコードを書いて、理解を深めてください。


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

求人一覧

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

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