看到自己之前记录的有用到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; }