我正在 Xamarin 中使用 c#,我有一个可观察的集合,在列表视图中保存项目。当我尝试使用.Remove(( 它返回 false,并且该项保留在列表中。我已经在对象中实现了 Equals(( 和 GetHashCode((,当我打印其结果时,我发现 Equals 没有被 remove 调用。
我知道列表中的项目和我试图删除的项目之间的对象引用不会相同,这就是我为 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();
}
}
}
好吧,我很笨。 这是一个大写问题。谢谢你的帮助,小提琴真的帮我找到了它。