C#中Equal与==的使用原则

Equal与==都可以被重写,但要把握的原则是:

重写Equal来表示值相等,而不重写==继续让其表示引用相同
<pre>
class Person
{
public Person(int id)
{
ID = id;
}

public string ID{get; private set;}

<font color=blue>
public override bool Equals(object obj)
{
    Person p = obj as Person;
    if(p == null)
        return false;
    return ID == p.ID;
}
</font>
<font color=red>
// 这里要注意,一定要重写GetHashCode()方法
// 否则会出现当值相等的两个Person做为key在Dictionary中时,会认为是两个不同的key
pubic override int GetHashCode()
{
    return ID.GetHashCode();
}
</font>

}
</pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,013评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,713评论 19 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,855评论 0 9
  • 相关概念 面向对象的三个特征 封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象. 多态的好处 允许不同类对...
    东经315度阅读 6,228评论 0 8
  • 自我提升学习第132天(8月27日) 今天是培训学习的第三天,也是最后一天,眼看进入培训PK的最后关头,...
    vv167阅读 1,560评论 0 2