dea*_*mon 9 .net c# java gethashcode guava
Google Guava提供了很好的帮助来实现equals,hashCode如下例所示:
public int hashCode() {
return Objects.hashCode(lastName, firstName, gender);
}
Run Code Online (Sandbox Code Playgroud)
是否有类似的Microsoft .NET库?
Jon*_*nna 20
我不明白为什么你需要一个.如果您想基于GetHashCode3个不同项的默认值创建哈希码,那么只需使用:
Tuple.Create(lastName, firstName, gender).GetHashCode()
Run Code Online (Sandbox Code Playgroud)
这将归结为相当于:
int h1 = lastName.GetHashCode();
int h2 = firstName.GetHashCode();
int h3 = gender.GetHashCode();
return (((h1 << 5) + h1) ^ (((h2 << 5) + h2) ^ h3));
Run Code Online (Sandbox Code Playgroud)
对于这种通用组合来说,这是非常合理的.
同样:
Tuple.Create(lastName, firstName, gender).Equals(Tuple.Create(lastName2, firstName2, gender2))
Run Code Online (Sandbox Code Playgroud)
归结为相当于调用:
return ((lastName == null && lastName2 == null) || (lastName != null && lastName.Equals(lastName2)))
&& ((firstName == null && firstName2 == null) || (firstName != null && firstName.Equals(lastName2)))
&& ((gender == null && gender2 == null) || (gender != null && gender.Equals(lastName2)));
Run Code Online (Sandbox Code Playgroud)
再次,大约和你期望的一样好.
| 归档时间: |
|
| 查看次数: |
1538 次 |
| 最近记录: |