Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#是否存在与Java with equals和gethashcode()相同的问题?_C#_Java_Equals_Gethashcode - Fatal编程技术网

c#是否存在与Java with equals和gethashcode()相同的问题?

c#是否存在与Java with equals和gethashcode()相同的问题?,c#,java,equals,gethashcode,C#,Java,Equals,Gethashcode,c#是否存在与Java的equals和gethashcode相同的问题 像这样的问题:因为你有点含糊不清,所以不确定你在谈论哪些问题 但是,如果您的意思是当您重写Equals时,您应该(如果您不希望编译器警告,或者代码中可能出现意外行为)重写GetHashCode,那么是的。如果您的意思是在继承方面很难定义相等,那么是的 但是,.NET有IEqualityComparer接口,该接口经常用于相等和散列-用于字典等容器。框架中几乎所有需要相等/散列的内容都允许行为由IEqualityCompare

c#是否存在与Java的equals和gethashcode相同的问题


像这样的问题:

因为你有点含糊不清,所以不确定你在谈论哪些问题


但是,如果您的意思是当您重写
Equals
时,您应该(如果您不希望编译器警告,或者代码中可能出现意外行为)重写
GetHashCode
,那么是的。

如果您的意思是在继承方面很难定义相等,那么是的


但是,.NET有
IEqualityComparer
接口,该接口经常用于相等和散列-用于
字典
等容器。框架中几乎所有需要相等/散列的内容都允许行为由
IEqualityComparer
指定,这意味着您可以表达任何您想要的相等概念,如果类型本身给出的形式不适合您的需要。

您可能希望更明确一点。你指的是什么问题?取决于你所说的问题。Java的equals和getHashCode有什么问题吗?比如:@Blankman:Right-所以基本上你想要两个不同的平等概念;一个按ID,一个按各个字段。这正是
IEqualityComparer
的用途。那么集合使用IEqualityComparer?如果是,它似乎比Java更健壮。@Blankman:是的,像
HashSet
这样的东西允许您在创建自定义比较器时指定它们。