Closed1

【C#】参照型と代入、参照書き換え・メンバーの書き換え

adlooadloo
using UnityEngine;

public class ClassReferenceTest : MonoBehaviour
{

    class Hogehoge
    {
        public string mess = "A";
    }

    
    [ContextMenu("Execute")]
    void Test()
    {
        Hogehoge origin = new Hogehoge();
        Hogehoge reference = origin; //値ではなく参照を渡している

        Debug.Log("1 bar = " + origin.mess);   //"A"
        Debug.Log("1 foo = " + reference.mess);//"A"
        
        origin.mess = "BBBB";  //参照のメンバーを書き換える

        Debug.Log("2 bar = " + origin.mess);    //"BBBB"は想定内
        Debug.Log("2 foo = " + reference.mess); //"BBBB"参照元が書き換わっている。

        reference.mess = "CCCCCCCCCCC"; //参照のメンバーを書き換える

        Debug.Log("3 bar = " + origin.mess);    //"CCCCCCCCCCC"参照なので書き換わる
        Debug.Log("3 foo = " + reference.mess); //"CCCCCCCCCCC"は想定内。
    }
}

このスクラップは2021/05/09にクローズされました