gpt4 book ai didi

c# - 属性不从私有(private)字段返回值

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

我的 MonoTouch 应用程序中的一个属性出现奇怪的行为。貌似Property不能返回给定的值,但是MonoDevelop里面的Debugger说后台的private field居然持有这个值??

属性是这样实现的:

public int? Status
{
get { return this._status; }
internal set
{
if (this._status != value)
{
// Status hat sich geändert, darum Speichervorgang nötig
this._mustBeSaved = true;
this._status = value;
this.NotifyPropertyChanged("Status");
}
}
}

在这里你可以看到调试器说了什么:

Debugger

反射值(“value”)持有正确的值,而反射字段“has_value”表示它没有立即持有任何值,这怎么可能?因此,无法从属性中获取值。

(这个属性和我的其他属性之间的唯一区别是这个属性可以为空)

最佳答案

_value 实际上是 null。您在调试器中看到的是内部字段,不应依赖。

当您将该字段设置为 null 时,编译器可能会重新使用存储,因此这就是为什么您仍然在内部 value 字段中看到旧值的原因。重要的是公共(public)属性 HasValueValue

关于c# - 属性不从私有(private)字段返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574689/

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