首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gethashcode()函数

Gethashcode()函数
EN

Stack Overflow用户
提问于 2010-08-26 01:51:11
回答 2查看 376关注 0票数 1

为什么C1和c2没有相同的哈希码?代码没有达到“相同”的程度...(两个类中的i=0 )

代码语言:javascript
复制
class myclass
{
    public static int i;

    static void Main()
    {
        myclass c1 = new myclass();
        myclass c2 = new myclass();

        if (c1.GetHashCode() == c2.GetHashCode())
            Console.Write("Same");

    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-26 01:56:55

GetHashCode()的默认实现基于引用,而不是对象的字段。

如果您希望它们相同,则需要覆盖GetHashCode(),因此它是基于您的字段的(然后您还应该记住覆盖Equals() )。

票数 3
EN

Stack Overflow用户

发布于 2010-08-26 01:55:02

因为您正在创建同一个类的不同实例。类的每个实例都有自己的哈希码,哈希码用于标识程序内存中的对象,即使它们共享相同的字段值。

然而,如果你这样做了,它会写成" same ",因为你只是创建了两个指向同一个对象的变量(即你将c1的引用传递给了c2对象):

代码语言:javascript
复制
    myclass c1 = new myclass();
    myclass c2 = c1;

    if (c1.GetHashCode() == c2.GetHashCode())
        Console.Write("Same");

当然,我不认为这是您要实现的目标。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3568797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档