C# List Remove 移除失效时
当我调用List的Remove的时候,有的地方移除成功,但有的地方却移除失败,这个时候我们需要在实体类里面重写Equals
1 public partial class T_SM_GroupsRelation { 2 public int FID { get; set; } 3 public int FGroupID { get; set; } 4 public int FParentID { get; set; } 5 6 7 //重写Equals,判断当ID相等时就认为是相同的 8 public override bool Equals(object obj) { 9 T_SM_GroupsRelation m = obj as T_SM_GroupsRelation; 10 if (this.FID == m.FID) { 11 return true; 12 } 13 return false; 14 } 15 }
相信大家看到这里就知道为什么要重写这个方法了,查看 SDK 我们发现 List<T> 中的 IList.Remove 判断两个 实体对象是否相等的方法是从 Object 根类继承下来的 Equals 和 GetHashCode 方法,即比较两个对象的引用是否指向同一个对象。由于Remove里面获取实体的方法每次返回的都是一个新的对象,于是就导致了问题所在。
浙公网安备 33010602011771号