请看以下代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyClass
{
public int myNumber;
}
public class Test : MonoBehaviour
{
MyClass class1 = new MyClass();
MyClass class2 = new MyClass();
void Start()
{
class1.myNumber = 1;
class2 = class1;
class2.myNumber = 2;
Debug.Log(class1.myNumber); //output: 2 (I'd want it to output 1!!!)
}
}
如果我理解正确的话,在C#中,类是引用类型而不是值类型,因此这种行为是期望的。
但是,我该怎么做才能避免这种情况发生?我该如何进行正常的值赋值而不会将两个类"链接"在一起?
我意识到我可以用以下代码替换第18行:
class2.myNumber = class1.myNumber;
这样会达到我想要的效果(因为我正在分配一个值类型而不是引用类型),但对于我的情况来说有点不方便... 在我的真实脚本中,该类具有多个子元素,我需要将它们复制到许多不同的位置。
有没有一种一行代码的方法可以将一个类复制到一个新的类中,而不是通过引用与原始类链接,而是创建一个独立的新类?
struct
是否可行? - rhughes