首页 > 解决方案 > (C#)如何按值类型而不是引用类型复制类?

问题描述

采取以下代码:

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;

它会做我想做的事(因为我分配的是值类型而不是引用类型),但这对我的情况来说有点不方便......在我的真实脚本中,该类有几个我需要复制的子元素许多不同的地方。

是否有一种将类复制到新类的单行方法,而不是通过引用原始类而是通过创建一个新的独立类来链接它?

标签: c#classunity3dreference-type

解决方案



推荐阅读