我想知道在string实例上调用GetHashCode()方法时得到重复值的概率。例如,accordingtothisblogpost,blair和brainlessness在x86机器上具有相同的哈希码(1758039503)。 最佳答案 大。(对不起乔恩!)短字符串之间发生哈希冲突的概率非常大。给定一组只有一万个从常用词中提取的不同短字符串,该集合中至少存在一次冲突的概率约为1%。如果你有八万个字符串,至少发生一次碰撞的概率超过50%。有关显示集合大小与碰撞概率之间关系的图表,请参阅我关于该主题的文章:https://learn
我想知道在string实例上调用GetHashCode()方法时得到重复值的概率。例如,accordingtothisblogpost,blair和brainlessness在x86机器上具有相同的哈希码(1758039503)。 最佳答案 大。(对不起乔恩!)短字符串之间发生哈希冲突的概率非常大。给定一组只有一万个从常用词中提取的不同短字符串,该集合中至少存在一次冲突的概率约为1%。如果你有八万个字符串,至少发生一次碰撞的概率超过50%。有关显示集合大小与碰撞概率之间关系的图表,请参阅我关于该主题的文章:https://learn
测试Equals方法非常简单(据我所知)。但是您究竟如何测试GetHashCode方法? 最佳答案 测试两个不同的对象是否具有相同的哈希码(对于不同的值)。检查不相等的对象是否给出不同的哈希码,一次改变一个方面/属性。虽然散列码不必不同,但如果您为碰巧提供相同散列码的属性选择不同的值,您就真的很不走运,除非您已经有一个错误。 关于C#:如何对GetHashCode进行单元测试?,我们在StackOverflow上找到一个类似的问题: https://stack
测试Equals方法非常简单(据我所知)。但是您究竟如何测试GetHashCode方法? 最佳答案 测试两个不同的对象是否具有相同的哈希码(对于不同的值)。检查不相等的对象是否给出不同的哈希码,一次改变一个方面/属性。虽然散列码不必不同,但如果您为碰巧提供相同散列码的属性选择不同的值,您就真的很不走运,除非您已经有一个错误。 关于C#:如何对GetHashCode进行单元测试?,我们在StackOverflow上找到一个类似的问题: https://stack
这个问题在这里已经有了答案:WhatisthebestalgorithmforoverridingGetHashCode?(22个答案)关闭5年前。如您所知,GetHashCode返回一个半唯一值,可用于标识集合中的对象实例。作为一种好的做法,建议覆盖此方法并实现您自己的方法。我的问题是-您在处理自定义对象时是否会覆盖此方法?如果是这样,您使用什么算法来生成唯一ID?我正在考虑生成一个GUID,然后从该标识符中获取整数数据。
这个问题在这里已经有了答案:WhatisthebestalgorithmforoverridingGetHashCode?(22个答案)关闭5年前。如您所知,GetHashCode返回一个半唯一值,可用于标识集合中的对象实例。作为一种好的做法,建议覆盖此方法并实现您自己的方法。我的问题是-您在处理自定义对象时是否会覆盖此方法?如果是这样,您使用什么算法来生成唯一ID?我正在考虑生成一个GUID,然后从该标识符中获取整数数据。
我有一个简单的类:publicclassTileName{intZoom,X,Y;publicoverrideboolEquals(objectobj){varo=objasTileName;return(o!=null)&&(o.Zoom==Zoom)&&(o.X==X)&&(o.Y==Y);}publicoverrideintGetHashCode(){return(Zoom+X+Y).GetHashCode();}}我很好奇,如果我改为执行以下操作,是否会得到更好的散列码分布:publicoverrideintGetHashCode(){returnZoom.GetHashCod
我有一个简单的类:publicclassTileName{intZoom,X,Y;publicoverrideboolEquals(objectobj){varo=objasTileName;return(o!=null)&&(o.Zoom==Zoom)&&(o.X==X)&&(o.Y==Y);}publicoverrideintGetHashCode(){return(Zoom+X+Y).GetHashCode();}}我很好奇,如果我改为执行以下操作,是否会得到更好的散列码分布:publicoverrideintGetHashCode(){returnZoom.GetHashCod
我正在处理域模型,并且正在考虑我们必须在.NET中实现这两种方法的各种方式。您的首选策略是什么?这是我当前的实现:publicoverrideboolEquals(objectobj){varnewObj=objasMyClass;if(null!=newObj){returnthis.GetHashCode()==newObj.GetHashCode();}else{returnbase.Equals(obj);}}//SincethisisanentityIcanuseitsId//WhenIdon'thaveanId,Iusuallymakeacompositekeyofthep
我正在处理域模型,并且正在考虑我们必须在.NET中实现这两种方法的各种方式。您的首选策略是什么?这是我当前的实现:publicoverrideboolEquals(objectobj){varnewObj=objasMyClass;if(null!=newObj){returnthis.GetHashCode()==newObj.GetHashCode();}else{returnbase.Equals(obj);}}//SincethisisanentityIcanuseitsId//WhenIdon'thaveanId,Iusuallymakeacompositekeyofthep