我正在尝试将数组的一部分复制到其他位置。这是声明。

 public ObjectBasicFeatures[] ALLOBJECTS = new ObjectBasicFeatures[150];


当我这样做时

ALLOBJECTS[1]= ALLOBJECTS[0];


对一个进行任何更改都会导致另一个更改。

据我了解,它是将指针设置为相同的地址(正在“复制”它,但不是我想要的)。

如何将指针ALLOBJECTS [0]上存储的内存复制到ALLOBJECTS [1]?

尝试过的事情:


Array.Copy()(仍复制指针...)
使用解引用运算符(无效...)

最佳答案

您需要一个复制构造函数或将ObjectBasicFeatures构造为一个结构(struct是值类型,而class是引用类型)
然后,您可以编写:

ALLOBJECTS [1] =新的ObjectBasicFeatures(ALLOBJECTS [0]);

另一个例子:

class Program
{
    static void Main(string[] args)
    {
        var o1 = new ObjectBasicFeatures();
        var o2 = new ObjectBasicFeatures(o1);
        System.Diagnostics.Debug.Assert(!o1.Equals(o2));

    }
}

public class ObjectBasicFeatures
{
    public ObjectBasicFeatures()
    {
        MyProperty = 0;
    }

    /// <summary>
    /// copy constructor
    /// </summary>
    /// <param name="other"></param>
    public ObjectBasicFeatures(ObjectBasicFeatures other)
    {
        MyProperty = other.MyProperty;
    }

    public int MyProperty { get; set; }
}

关于c# - 关于数组的困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42043597/

10-17 00:15