c# - 为什么我的浮动镜像另一个浮动而不是有自己的价值?
问题描述
我不确定问题是否足够清楚,所以我将展示代码以及实际发生的情况。代码相关部分的摘录如下:
public class MyClass : BaseClass
{
public override void UpdateValue() // This is the base class' abstract method.
{
MyObject obj = GetObject();
OriginalValue = obj.Value;
obj.SetValue(this.Value); // I know "this." is not needed here. It's just for this exerpt's readability.
}
public float OriginalValue { private set; get; }
public float Value
{
set
{
this.value = value;
{...}
}
get => value;
}
public MyObject GetObject() => {...}
private float value;
}
public class MyObject
{
public float Value
{
set
{
if {...}
else SetValue(value);
}
get => value;
}
internal void SetValue(float value) => this.value = value;
private float value;
}
如您所见,我的意图是在MyObject
每次调用时都保留 ' 的原始值MyClass.UpdateValue()
,以便以后可以恢复它。但是,会发生的情况是MyClass.OriginalValue
始终具有与 相同的值MyObject.Value
。
例如说MyObject.Value
当前是 10 并且MyClass.Value
是 15。这意味着一旦MyClass.UpdateValue()
被调用,MyClass.OriginalValue
应该是 10 并且MyObject.Value
应该是 15。而不是那个,MyClass.OriginalValue
也将是 15。即使我obj.SetValue(x)
在方法中添加另一个,这仍然会发生,OriginalValue
使x
而不是对象的原始值。
所以,我的问题是:MyClass.OriginalValue
真的是镜像MyObject.Value
吗?如果不是,那是怎么回事?我该如何解决这个问题?
任何帮助表示赞赏。谢谢你。
解决方案
发布的代码没有任何奇怪的事情发生......
最简单的解释可能是在's设置UpdateValue()
后调用。MyObject
Value
我建议您尝试设置一些断点UpdateValue()
并MyObject.Value
查看最后调用哪个断点...
推荐阅读
- google-cloud-dataflow - 如果我的管道重新设置元素的密钥 - 如何在没有 GroupByKey 的情况下获取同一工作人员中一个密钥的值?
- sql - 如何根据日期从组中选择前 3 个值并排除重复值?
- apache-spark - 每个 Kubernetes 节点运行多少个 Spark Executor Pod
- typescript - TS(2352) 声明具有动态属性和一个具有特定类型的属性的对象
- ios - UIPageViewController。如何设置自定义 UIViewControllers 数组
- .htaccess - Firefox 不会正确重定向到 HTTPS
- awk - NR==FNR 不返回相同的列
- node.js - Mocha/Chai 测试不断产生错误“无法读取未定义的属性‘长度’”,但该函数在应用程序本身中有效
- jquery - 在 laravel 刀片的 foreach 中形成
- django-viewflow - 如何指定进程结束时显示的 django 视图?