gpt4 book ai didi

c# - 我怎样才能避免错误地更新当前对象上的另一个对象?

转载 作者:搜寻专家 更新时间:2023-11-01 01:19:01 24 4
gpt4 key购买 nike

当我使用引用类型时,您能建议我避免这种情况的方法吗?

var someCost = new Cost( Price: new Price(1000, "USD")
, CostType: "Type-A") ;

var candyCost = new Cost();

// Initialize candyCost.Price
candyCost.Price = someCost.Price; //Now candyCost Price is referencing
// price of someCost;

// (.......)
// Some logic and code here
//and I forgot that I was referencing to someCost object's price object
//and I do stupid mistake:

candyCost.Price.Value = 5000; //Now I believe I have updated candyCost price
//but I have also updated someCost!!

故事的其余部分是关于调试以找出更新 someCost 的价格的原因。

我想用这个例子来简化问题。我希望你明白我的意思。

问题:你能推荐一种方法让我避免重蹈覆辙吗?涉及更新引用类型的值时的任何设计模式。

最佳答案

您的 Price 对象应该是不可变的 - 这将迫使您分配一个新的 Price 对象而不是更改现有对象的价格,从而避免副作用。

关于c# - 我怎样才能避免错误地更新当前对象上的另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5566618/

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