小编ren*_*ene的帖子

如何使用覆盖的逻辑Equals()实现GetHashCode()的覆盖

我有一些类,如下所示,我已经实现了Equals(Object)几乎所有的方法.但我不知道怎么写 GetHashCode().到目前为止,我在Dictionary集合中使用这些数据类型作为值类型,我想我应该覆盖GetHashCode().

我不知道如何GetHashCode()用逻辑来实现Equals(Object).

2.有一些派生类,如果我覆盖GetHashCode()并且Equals(Object)对于基类(Param),是否仍然需要为子节点覆盖它?

class Param
{
    ...
    public Int16 id { get; set; }
    public String name { get; set; }
    ...
    public override bool  Equals(object obj)
    {
        if ( obj is Param){
            Param p = (Param)(obj);
            if (id > 0 && p.id > 0)
                return (id == p.id);
            else if (name != String.Empty && p.name != String.Empty)
                return (name.equals(p.name));
            else
                return …
Run Code Online (Sandbox Code Playgroud)

c# overriding gethashcode

4
推荐指数
2
解决办法
2万
查看次数

标签 统计

c# ×1

gethashcode ×1

overriding ×1