[英]Gethashcode() function
为什么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");
}
}
GetHashCode()
的默认实现基于引用,而不是对象的字段。
如果你想要它们是相同的,你需要覆盖GetHashCode()
,因此它基于你的字段(然后你应该记得也重写Equals()
)。
因为您正在创建同一个类的不同实例 。 类的每个实例都有自己的哈希码,哈希码用于标识程序内存中的对象,即使它们都共享相同的字段值。
但是,如果你这样做,它会写“相同”,因为你只是创建两个指向同一个对象的变量(即你将c1
的引用传递给对象到c2
):
myclass c1 = new myclass();
myclass c2 = c1;
if (c1.GetHashCode() == c2.GetHashCode())
Console.Write("Same");
当然,我认为这不是你想要实现的目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.