为什么我的浮点数是另一个浮点数的镜像而不是有自己的值?
Why is my float mirroring another float instead of having its own value?
我不确定问题是否足够清楚,所以我会展示代码和实际发生的事情。代码相关部分摘录如下:
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;
}
如您所见,我的意图是在每次调用 MyClass.UpdateValue()
时保留 MyObject
的原始值,以便以后可以恢复它。但是,发生的情况是 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
的镜像吗?如果不是,这是怎么回事?我该如何解决这个问题?
感谢任何帮助。谢谢。
发布的代码没有任何异常...
最简单的解释可能是 UpdateValue()
在 MyObject
的 Value
设置后被调用。
我建议你尝试在 UpdateValue()
和 MyObject.Value
中设置一些断点,看看最后调用哪个...
我不确定问题是否足够清楚,所以我会展示代码和实际发生的事情。代码相关部分摘录如下:
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;
}
如您所见,我的意图是在每次调用 MyClass.UpdateValue()
时保留 MyObject
的原始值,以便以后可以恢复它。但是,发生的情况是 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
的镜像吗?如果不是,这是怎么回事?我该如何解决这个问题?
感谢任何帮助。谢谢。
发布的代码没有任何异常...
最简单的解释可能是 UpdateValue()
在 MyObject
的 Value
设置后被调用。
我建议你尝试在 UpdateValue()
和 MyObject.Value
中设置一些断点,看看最后调用哪个...