GetHashCode

看到自己之前记录的有用到HashCode的地方,自己又不明白,所以记录下。

现在也不明天,也许哪天就顿悟了。

libilibi上的视频,可以在哔哩哔哩上多看看,无论java还是C#,理论都是一样的

//==是判断两个对象的地址是否相同,
//两个对象HashCode相同,Equals是否相同
//两个对象Equals相同,HashCode是否相同

//HashCode和Equals,没有必然的联系;我可以重写HashCode,只返回1;我也可以重写Equals只返回True
//1:hashCode和Equals返回值应该是稳定的,不应该返回随机性
//2:两对象== 返回true,则这两个对象的equals也应该返回true
//3:两对象equals 则俩对象的HashCode也应该相同

//默认对象的hashcode的返回值永远大于等于0(默认对象,重写HashCode不算)
//默认对象的hashcode方法返回值不是对象的地址
//下面的两个地址内存地址是不相同的,所以肯定Equals肯定不同
test1 t1 = new test1() { s1 = "s", i1 = 1 };
test1 t2 = new test1() { s1 = "s", i1 = 1 };

bool b = t1.Equals(t2);
int ClassCode1 = t1.GetHashCode();
int ClassCode2 = t2.GetHashCode();
int StringCode = "zkb".GetHashCode();

int IntCode = 1.GetHashCode();
int IntCode2 = 2.GetHashCode();
int IntCode3 = 2.GetHashCode();
int IntCode4 = 2.GetHashCode();
                   
double doubleCode = 0.22.GetHashCode();
double doubleCode2 = 1.22.GetHashCode();

int NB0903100006 = "NB0903100006".GetHashCode();
int NB0904140001 = "NB0904140001".GetHashCode();
int NB0904140005 = "NB0904140005".GetHashCode();
 public class test1
        {
            public string s1;
            public int i1;
        }
原文地址:https://www.cnblogs.com/ZkbFighting/p/13408106.html