gpt4 book ai didi

c# - 未保留数组中对象的引用

转载 作者:行者123 更新时间:2023-11-30 20:23:15 25 4
gpt4 key购买 nike

我遇到了一个问题,就是对列表中对象的引用丢失了,这就是我详细说明代码的方式:

PropertyObject[] myProperties = new PropertyObject[200];
var objParent = new Parent();
var objProperty = new PropertyObject();

myProperties[0] = objProperty;
objParent.property = myProperties[0];

现在,当我修改 objParent.property 时,它不会修改 myProperties 数组中的对象,有什么解决方法吗?我需要这个,这样我就不必遍历数组。

这是我修改对象的方式:

public void modifyObject(ref Parent objectToModify) {
objectToModify.property.isThisCrazy = true;
}

然后我只调用 modifyObject 方法。

最佳答案

struct 是不可变的。将 struct 分配给另一个变量将导致复制 struct

在一个实例上分配属性时,不会更改 struct 的另一个 other 实例的属性。因此,您不会在其他引用中看到更新。

演示结构问题的示例代码:

struct X
{
public string Y { get; set; }

public X(string y) : this()
{
Y = y;
}
}

X x = new X("abc");
X x2 = x;

x2.Y = "def";

Console.WriteLine(x.Y);
Console.WriteLine(x2.Y);

对于类,您希望 x.Yx2.Y 相同,但对于结构则不然。

关于c# - 未保留数组中对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29385487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com