|
分類:[C#]
unity(c#)で下記のようなコードがあります。
---------------------------------------------------------- //クラスを定義 using UnityEngine; using System.Collections;
public class Teigi {public int i_class = 100;}
-----------------------------------------------------------
//定義したクラスを利用 using UnityEngine; using System.Collections;
public class Riyou : MonoBehaviour { void Start () { Teigi teigi = new Teigi(); Teigi teigi02 = new Teigi();
teigi = teigi02; teigi.i_class = 999; Debug.Log(teigi.i_class); Debug.Log(teigi02.i_class); } }
-----------------------------------------------------------
上記コードの場合は
Debug.Log(teigi.i_class); @ Debug.Log(teigi02.i_class); A @、A 共に999が出力されます。
しかし
---------------------------------------------------------- //クラスを定義 using UnityEngine; using System.Collections;
public class Teigi {public int i_class = 100;}
-----------------------------------------------------------
//定義したクラスを利用 using UnityEngine; using System.Collections;
public class Riyou : MonoBehaviour { void Start () { Teigi teigi = new Teigi(); Teigi teigi02 = new Teigi();
teigi.i_class = teigi02.i_class; teigi.i_class = 999; Debug.Log(teigi.i_class); Debug.Log(teigi02.i_class); } }
-----------------------------------------------------------
上記コードの場合は
Debug.Log(teigi.i_class); @ Debug.Log(teigi02.i_class); A @で999が出力 Aで100が出力されます
Teigiオブジェクトは参照型ですが Teigi.i_classフィールド(int)は値型になります。
なぜ、Teigiオブジェクトは参照型で int型のインスタンスフィールドは値型になるのか?
これがよく分からず困っております。 私のイメージとしてはインスタンスフィールドもオブジェクトに含まれますから クラスのインスタンスフィールドも参照型になると思っていました。 ですから、かなり困惑しております。
Teigiオブジェクトが参照型 int型のインスタンスフィールドは値型になる理由を教えてください よろしくお願いいたします。
|