我必须遵循以下课程:
public class NominalValue
{
public int Id {get; set;}
public string ElementName {get; set;}
public decimal From {get; set;}
public decimal To {get; set;}
public bool Enable {get; set;}
public DateTime CreationDate {get; set;}
public int StandardValueId {get; set;} //FK for StandardValue
}
public class StandardValue
{
public int Id {get; set;}
public string ElementName {get; set;}
public decimal From {get; set;}
public decimal To {get; set;}
public bool Enable {get; set;}
public DateTime CreationDate {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
用户想要填充nominalValue对象属性。填充nominalValue属性可以通过两种方式执行:
nominalValue手动填充值。nominalValue从standardValue对象加载值,然后更改或不更改某些值。有时我需要知道nominalValue指定元素的对象的某些属性是否等于对应的standardValue?
我不希望加载standardValue从Db检查这种平等,所以我决定来定义HashValue财产NominalValue类:
public class NominalValue
{
public int Id {get; set;}
public string ElementName {get; set;}
public decimal From {get; set;} //<-- 1st parameter for generating hash value
public decimal To {get; set;} //<-- 2nd parameter for generating hash value
public bool Enable {get; set;} //<-- 3rd parameter for generating hash value
public DateTime CreationDate {get; set;}
public int StandardValueId {get; set;}
public string HashValue {get;set;} //<-- this property added
}
Run Code Online (Sandbox Code Playgroud)
用户填充时nominalValue使用的属性standardValue的属性,我计算其值根据3个特性(From,To,Enable),并将其保存与其他属性,并且当我如果检查nominalValue填充有standardValue或没有,我计算散列码From,To,Enable并比较其结果HashValue(而是standardValue从Db)加载。
是否有任何机制可以根据 3 个属性值(From, To, Enable)计算唯一的哈希码?
你可以尝试做这样的事情:
private int GetHashValue() {
unchecked
{
int hash = 17;
//dont forget nullity checks
hash = hash * 23 + From.GetHashCode();
hash = hash * 23 + To.GetHashCode();
hash = hash * 23 + Enable.GetHashCode();
return hash;
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以在匿名类型上使用 GetHashCode 方法
private int GetHashValue() {
return new { From, To, Enable }.GetHashCode();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7306 次 |
| 最近记录: |