Shi*_*mmy 1 .net c# equals gethashcode
以下代码可以吗?
public override bool Equals(object obj)
{
if (obj == null || !(obj is LicenseType))
return false;
return GetHashCode() == obj.GetHashCode();
}
public override int GetHashCode()
{
return
Vendor.GetHashCode() ^
Version.GetHashCode() ^
Modifiers.GetHashCode() ^
Locale.GetHashCode();
}
Run Code Online (Sandbox Code Playgroud)
所有属性都是枚举/数字字段,并且是唯一定义LicenseType对象的属性.
不,文档非常清楚地说明:
您不应该假设相等的哈希码意味着对象相等.
也:
两个相等的对象返回相等的哈希码.但是,反之则不然:相等的哈希码并不意味着对象相等
和:
警告:
- 不要测试哈希码的相等性以确定两个对象是否相等.(不等的对象可以具有相同的哈希码.)要测试相等性,请调用ReferenceEquals或Equals方法.
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |