こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C# 「配列のコピー」と「配列の参照のコピー」の違い。

C#についての質問です。
今クラスについての勉強をしており、その中で「配列dataのコピーを取得する」メソッドを作成することになり、以下のように記述いたしました。

/// 配列dataのコピーを取得する
/// </summary>
/// <returns>クラスIntArrayが保持している配列のコピー</returns>
public int[] GetArray()
{
return this.data;
}

ところが、『「配列のコピー」が行なえていません。これでは、「配列の参照のコピー」です。』という指摘をいただきました。
そこで質問なのですが、「配列のコピー」と「配列の参照のコピー」の違いはどのようなものでしょうか?
独自に調べてもみたのですが、やはりこの2つの違いがいまいちわからず、困っています。

お分かりになる方がいらっしゃいましたら、ご助言をお願いいたします。

投稿日時 - 2008-10-18 12:57:08

QNo.4410482

すぐに回答ほしいです

質問者が選んだベストアンサー

要は、中身自身を複製することか、その中身を参照する値を複製することかの違いです。
// 配列のコピー
int a[5], b[5];
for ( int i = 0; i < 5; i++ ) a[i] = b[i];
→bの配列をいじってもaの配列に影響はない。
// 配列の参照のコピー
int a[], b[5];
a = b;
→bの配列をいじるとaの配列も影響がある。
なぜならaはbへの参照にしかすぎないのだから。

ざっと説明するとこんなもんですが、、、

投稿日時 - 2008-10-18 13:06:38

補足

早々のご回答ありがとうございました!

つまり今回の場合、配列のコピーを作成し、その作成したコピーをreturnすれば良いということでしょうか…?
質問が多く、申し訳ないです;;

投稿日時 - 2008-10-18 13:21:48

お礼

ご説明いただいた内容を踏まえて作成しなおしたところ、今度は無事完成させることができました!
ありがとうございました*

投稿日時 - 2008-10-18 14:10:50

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問