当我使用对象 属性 (get-set) 时,Xamarin 表单崩溃了 android 项目

Xamarin forms crashed android project, when i use object property (get-set)

我 运行 在创建项目时遇到问题。如果我使用属性 (get;set;),android 应用程序会在为 属性.

赋值时崩溃

例如:我创建了一个干净的 xamarin 项目来消除我的代码的影响。

属性 在我的 class:

 public class Item
    {
     public string Id
            {
                get { return Id; }
                set { Id = value; }
            }
    }

属性 使用:

 public AboutPage()
        {
            Item gg = new Item();
            gg.Id = "test";
            InitializeComponent();
        }

应用在行崩溃:

set { Id = value; }

错误不显示。 Error

求助。这是我第一次看到这个。我已经降级了平台。使用干净的项目。我做错了什么?

UPD:link 我的解决方案

您可以尝试像下面这样更改 属性:

public class Item
{
    public string Id { get; set; }

}

public class Item
{
    private string id;
    public string Id
    {
        get { return id; }
        set { id = value; }
    }
}

当您实现 INotifyPropertyChanged 接口时:

public class Item : INotifyPropertyChanged
{
    private string id;
    public string Id
    {
        get { return id; }
        set { id = value; OnPropertyChanged("Id"); }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

当你这样做时:

public string Id
{
    get { return Id; }
    set { Id = value; }
}

您实质上是在创建一个无限循环。这就是您的应用程序崩溃的原因。您正在无限调用 setter.

相反,您可以将其设置为自动 属性:

public string Id { get; set; }

或为 属性 添加支持字段:

private string _id;
public string Id
{
   get => _id;
   set => _id = value;
}