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里面获取实体的方法每次返回的都是一个新的对象,于是就导致了问题所在。

posted on 2011-01-07 16:52  AamirKhan  阅读(1108)  评论(0)    收藏  举报