「毎日Unity」の技術ブログ

開発で役立つ情報を発信する

【UnityC#】配列のコピー方法まとめ

配列のコピー方法をまとめました。

[ 一覧 ]

=

「=」を使って配列をコピーするとシャローコピーになります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    private void Start()
    {
        int[] ArrayA = new int[]{1, 2, 3};
        int[] ArrayB = new int[]{4, 5, 6};

        ArrayB = ArrayA;// ArrayAをArrayBにコピーします。

        print("ArrayA: " + ArrayA[0] + ", " + ArrayA[1] + ", " + ArrayA[2]);// ArrayA: 1, 2, 3
        print("ArrayB: " + ArrayB[0] + ", " + ArrayB[1] + ", " + ArrayB[2]);// ArrayB: 1, 2, 3
        
        ArrayB[0] = 7;
        ArrayB[1] = 8;
        ArrayB[2] = 9;

        print("ArrayA: " + ArrayA[0] + ", " + ArrayA[1] + ", " + ArrayA[2]);// ArrayA: 7, 8, 9
        print("ArrayB: " + ArrayB[0] + ", " + ArrayB[1] + ", " + ArrayB[2]);// ArrayB: 7, 8, 9
    }
}

Array.Copy()

「Array.Copy()」を使って配列をコピーするとディープコピーになります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class ScriptTest : MonoBehaviour
{
    private void Start()
    {
        int[] ArrayA = new int[]{1, 2, 3};
        int[] ArrayB = new int[]{4, 5, 6};

        Array.Copy(ArrayA, ArrayB, ArrayA.Length);// ArrayAをArrayBにコピーします。

        print("ArrayA: " + ArrayA[0] + " " + ArrayA[1] + " " + ArrayA[2]);// ArrayA: 1, 2, 3
        print("ArrayB: " + ArrayB[0] + " " + ArrayB[1] + " " + ArrayB[2]);// ArrayB: 1, 2, 3

        ArrayB[0] = 7;
        ArrayB[1] = 8;
        ArrayB[2] = 9;

        print("ArrayA: " + ArrayA[0] + " " + ArrayA[1] + " " + ArrayA[2]);// ArrayA: 1, 2, 3
        print("ArrayB: " + ArrayB[0] + " " + ArrayB[1] + " " + ArrayB[2]);// ArrayB: 7, 8, 9
    }
}

[ 関連記事 ]

edunity.hatenablog.com