为什么C1和c2没有相同的哈希码?代码没有达到“相同”的程度...(两个类中的i=0 )
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");
}
}发布于 2010-08-26 01:56:55
GetHashCode()的默认实现基于引用,而不是对象的字段。
如果您希望它们相同,则需要覆盖GetHashCode(),因此它是基于您的字段的(然后您还应该记住覆盖Equals() )。
发布于 2010-08-26 01:55:02
因为您正在创建同一个类的不同实例。类的每个实例都有自己的哈希码,哈希码用于标识程序内存中的对象,即使它们共享相同的字段值。
然而,如果你这样做了,它会写成" same ",因为你只是创建了两个指向同一个对象的变量(即你将c1的引用传递给了c2对象):
myclass c1 = new myclass();
myclass c2 = c1;
if (c1.GetHashCode() == c2.GetHashCode())
Console.Write("Same");当然,我不认为这是您要实现的目标。
https://stackoverflow.com/questions/3568797
复制相似问题