我正在尝试将数组的一部分复制到其他位置。这是声明。
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/