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

标签 c# xamarin.ios monodevelop nullable

我的 MonoTouch 应用程序中的一个属性遇到了奇怪的行为。 看起来Property无法返回给定的值,但是MonoDevelop中的Debugger说后台的私有(private)字段实际上保存了该值??

这就是该属性的实现方式:

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/

相关文章:

C# winform 删除然后将更多项目添加到面板控件

C# VSTO Outlook 插件 - 如何使用 Exchange 获取外发电子邮件的发件人的电子邮件地址?

ios - 从 Xamarin 项目导出 Xcode 项目

javascript - Unity Javascript 文件在 Xcode 中打开

runtime - 是否可以在 OS X 上 bundle Mono 运行时(不使用 Xamarin)?

c# - 使用 C# 在 .NET Framework 3.5 中进行并行编程

c# - 如何在 Blazor 中正确嵌入 <iframe>? (YouTube)

xcode - IBUIColor.m 中的断言失败 - Xamarin.iOS

ios - Xamarin Forms iOS11 大标题文本额外空白

iphone - 无法从应用程序加载器上传应用程序