gpt4 book ai didi

c# - 如何通过更改变量静态设置属性

转载 作者:太空宇宙 更新时间:2023-11-03 19:05:18 24 4
gpt4 key购买 nike

这可能是一个简单的问题,总的来说,我对 OOP 还很陌生。

如果我有一个带有一个 int 数组属性(和构造函数)的简单类

public class MyClass
{
public int[] MyProperty {get; set;}
public MyClass(){}
}

如何将属性值设置为对象的值,而不会在对象更改时更改属性?

MyClass C1 = new MyClass();
MYClass C2 = new MyClass();
int[] x = new int[3] {1,2,3};
C1.MyProperty = x;
x[2] = 7; //this changes C1.MyProperty to a value of {1,2,7}
C2.MyProperty = x;

即使我更改了 x[2] 的值,我也希望 C1 属性的 2 索引值保持为 3。同样,我希望 C2 属性索引 2 的值始终为 7。是否有某种方法可以将属性设置为类似 ValueOf(x) 的值?我需要某种静态关键字吗?

最佳答案

这一行:

C1.MyProperty = x;

表示 MyProperty 指向与 x 相同的引用,因此 x 元素的任何更改对于您的属性也是可见的.该代码当前正在进行浅复制。

一个简单的修复可能是:

C1.MyProperty = x.ToArray();

ToArray 将创建一个新数组/一个新引用并将其分配给 MyProperty

你应该寻找deep copying objects .

关于c# - 如何通过更改变量静态设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28886560/

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