如何解决当我使用对象属性get-set时,Xamarin 表单崩溃了 android 项目
我在创建项目时遇到了问题。如果我使用属性 (get;set;),Android 应用程序会在为属性分配值时崩溃。
例如:我创建了一个干净的 xamarin 项目来消除我的代码的影响。
我班上的财产:
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; }
帮助。这是我第一次看到这个。我已经降级了平台。使用干净的项目。我做错了什么?
解决方法
您可以尝试更改属性,如下所示:
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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。