C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.88122 の関連記事表示

<< 0 >>
■88122  Re[1]: C#の配列コピーについて
□投稿者/ 魔界の仮面弁士 -(2018/08/03(Fri) 12:02:06)
    2018/08/03(Fri) 12:09:03 編集(投稿者)

    No88108 (kasumi さん) に返信
    > int[] A = { 1, 2, 3 };
    代入式の右辺は、「{1, 2, 3} という int[] 型インスタンス」を作成しています。
    それを左辺の、「int[]」型の変数 A から参照させています。


    > int[] B = { 1, 2, 3, 4, 5 };
    代入式の右辺は、「{1, 2, 3, 4, 5} という int[] 型インスタンス」を作成しています。
    それを左辺の、「int[]」型の変数 B から参照させています。


    > A = B;
    右辺 B は、「{1, 2, 3, 4, 5} という int[] 型インスタンス」を指しており、
    それを左辺の A に代入しています。

    それ以前に保持していた {1, 2, 3} への参照は、この時点で失われ、
    変数 A が参照しているインスタンスは、B が参照しているインスタンスと
    同一のオブジェクトとなります。(データのコピーではなく、参照のコピー)


    参照のコピーではなく、データのコピーが目的なら、
    Clone メソッドや Array.Copy メソッドを使います。



    > VisualStudio 2017 でC#を書いている者です。
    2017 なら、こういう記述もあったりして。


    int[] A = { 1, 2, 3 };
    int[] B = { 1, 2, 3, 4, 5 };
    ref int[] C = ref A;
    Console.WriteLine(A.Length); // まだ 3
    Console.WriteLine(B.Length); // まだ 5
    Console.WriteLine(C.Length); // まだ 3
    A = B;
    Console.WriteLine(A.Length); // 5 に変わった
    Console.WriteLine(B.Length); // 5 のまま
    Console.WriteLine(C.Length); // 5 に変わった
記事No.88108 のレス /過去ログ151より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -