gpt4 book ai didi

c# - 通过引用而不是通过值传递的对象

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

我正在 windows phone 8 中编写一段代码 (c#)(与 windows 8 有同样的问题)。

我想知道如何传递一个对象的值而不是他的引用。

让我用一个例子来解释:

public MyClass
{
private Foo foo //my object.

public void Init()
{
foo = new Foo();
foo.age = 5;
ChangeFooValue(foo);
}
private void ChangeFooValue(Foo temp)
{
temp.age = 10;
//I want to change temp and NOT foo.
//But at the end of this
//foo.age = 10;
//and
//temp.age = 10;
}
}

已解决:我在类里面用这个来创建一个深拷贝:

public Foo DeepCopy()
{
Foo other = (Foo) this.MemberwiseClone();
return other;
}

ps:这可能是一个愚蠢的问题(如果是,请提供一些教程,以便我自己解决)。

最佳答案

引用类型的地址是按值传递的,这就是您看到这种效果的原因。你可以create a deep copy在传递给函数之前你的对象。

您应该看到:Parameter passing in C# by Jon Skeet

关于c# - 通过引用而不是通过值传递的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15428624/

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