c# gethashcode和equal重写
来源:互联网 发布:我国近年财政补贴数据 编辑:程序博客网 时间:2024/05/19 15:42
重写一个类的 Equals方法,必须要重写它的gethashcode方法,在比较2个对象是否相等时,调用equals方法,2个对象可以有不同的hashcode,但Equals返回的却是TRUE,所以2个对象相等与否,只与它的Equals方法的返回值有关
注:在List<Object> list.contains();时,判断是否包含也是通过equals方法
static void Main(string[] args) { Dog d1 = new Dog(1,"shaojun"); Dog d2 = new Dog(2,"xiaohei"); List<Dog> dlist = new List<Dog>(); dlist.Add(d1); dlist.Add(d2); Dog d3 = new Dog(1, "shaojun"); Dog d4 = new Dog(11, "shaojun"); Console.WriteLine(dlist.Contains(d3)); Console.WriteLine(dlist.Contains(d4)); dlist.Remove(new Dog("shaojun")); prinf(dlist); Console.WriteLine(d1.Equals(d3)); } public static void prinf(List<Dog> dlist) { foreach(Dog d in dlist){ Console.WriteLine("id:"+d.id+",name:"+d.name); } }
public class Dog { public Dog() { } public Dog(string _name) { name = _name; } public Dog(int _id,string _name) { id = _id; name = _name; } public int id { get; set; } public string name { get; set; } public override int GetHashCode() { return id; } public override bool Equals(object obj) { //判断与之比较的类型是否为null。这样不会造成递归的情况 if (obj == null) return false; if (GetType() != obj.GetType()) return false; Dog d = (Dog)obj; //if (this.GetHashCode() == d.GetHashCode()) // return true; if (name.Equals(d.name)) return true; return false; } }
0 2
- c# gethashcode和equal重写
- C#之GetHashCode() 和Equal()
- 为什么重写equal方法必须重写getHashCode?
- C#重写GetHashCode()
- C# Dictionary中做Key的类应该注意重写getHashCode和Equals
- C# Dictionary中做Key的类应该注意重写getHashCode和Equals
- 重写toString和equal方法
- equal重写
- C#详析GetHashCode方法
- 重写Equals为什么要同时重写GetHashCode
- 建议12: 重写Equals时也要重写GetHashCode
- Tip12 重写Equals时也要重写GetHashCode
- C# GetHashCode 的实现方式
- getHashCode()
- GetHashCode
- 对于equal和hashcode的理解,何时需要重写
- 重写equal和hashCode方法,用集合去重对象
- 关于equal hashcode 重写
- Linux内存管理 mmap系统调用
- Neutron 架构学习
- 5. 微软面试题: 查找最小的k个元素(数组)
- 关于Switch语句的一点认识
- 我的书单
- c# gethashcode和equal重写
- Cocos2d-x中的词典类CCDictionary深入分析
- 华为股权簿曝光:员工大多数万股
- 定义两个结构体
- 百科 拓展视野
- 华为股权曝光:核心谜题待解
- JD 1550:分糖果(线性dp + 记忆化搜索)
- 进程与线程的描述与控制,核心级线程和用户级线程的区别
- Canopy Clustering