我正在Xamarin中使用c#,并且在列表视图中有一个可观察的集合,其中包含项目。当我尝试使用.Remove()删除这些项目时,它返回false,并且该项目保留在列表中。我已经在对象中实现了Equals()和GetHashCode(),当我打印其结果时,我发现remove不会调用Equals。
我知道列表中的项目与我要删除的项目之间的对象引用将是不同的,这就是为什么我实现了Equals()的覆盖
using System;
using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace CustomRenderer
{
public class FishObject
{
public string Comment { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public string Address { get; set; }
public int NumberOfFish { get; set; }
public DateTime createdAt { get; set; }
public string ContactInfo { get; set; }
public Image Picture { get; set; }
public string Id { get; set; }
public override bool Equals(Object obj)
{
FishObject fishObj = obj as FishObject;
if (fishObj == null)
{
return false;
}
else
{
var number = this.NumberOfFish == fishObj.NumberOfFish;
var coment = this.Comment == fishObj.Comment;
var lat = this.Latitude == fishObj.Latitude;
var lon = this.Longitude == fishObj.Longitude;
var contact = this.ContactInfo == fishObj.ContactInfo;
var result = number && coment && lat && lon && contact;
System.Diagnostics.Debug.WriteLine("Equals res: " + result);
return result;
}
}
public override int GetHashCode()
{
return (this.Comment).GetHashCode();
}
}
}
答案 0 :(得分:0)
嗯,我很傻。这是一个大写问题。感谢您的所有帮助,小提琴确实帮助我找到了它。