これまでにこのようなことをしたことがないので、私のクラスでExcept()とGetHashCode()のオーバーライドを正しく実装できることを期待できました。Equals()とGetHashCode()をオーバーライドする正しい方法
私はLINQ Except()メソッドを使用できるようにクラスを変更しようとしています。
public class RecommendationDTO{public Guid RecommendationId { get; set; }
public Guid ProfileId { get; set; }
public Guid ReferenceId { get; set; }
public int TypeId { get; set; }
public IList<TagDTO> Tags { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime? ModifiedOn { get; set; }
public bool IsActive { get; set; }
public object ReferencedObject { get; set; }
public bool IsSystemRecommendation { get; set; }
public int VisibilityScore { get; set; }
public RecommendationDTO()
{
}
public RecommendationDTO(Guid recommendationid,
Guid profileid,
Guid referenceid,
int typeid,
IList<TagDTO> tags,
DateTime createdon,
DateTime modifiedon,
bool isactive,
object referencedobject)
{
RecommendationId = recommendationid;
ProfileId = profileid;
ReferenceId = referenceid;
TypeId = typeid;
Tags = tags;
CreatedOn = createdon;
ModifiedOn = modifiedon;
ReferencedObject = referencedobject;
IsActive = isactive;
}
public override bool Equals(System.Object obj)
{
// If parameter is null return false.
if (obj == null)
{
return false;
}
// If parameter cannot be cast to Point return false.
RecommendationDTO p = obj as RecommendationDTO;
if ((System.Object)p == null)
{
return false;
}
// Return true if the fields match:
return (ReferenceId == p.ReferenceId);// && (y == p.y);
}
public bool Equals(RecommendationDTO p)
{
// If parameter is null return false:
if ((object)p == null)
{
return false;
}
// Return true if the fields match:
return (ReferenceId == p.ReferenceId);// && (y == p.y);
}
//public override int GetHashCode()
//{
// return ReferenceId;//^y;
//}}
私はhttp://msdn.microsoft.com/en-us/library/ms173147.aspxを見て撮影してきたが、私は誰かが私自身の例の中に私を見ることができ期待していました。
ご協力いただければ幸いです。このようなあなたのクラスの
あなたが(等号を上書きすることができ、あなたに
リンク先のページで:「不変型では演算子==を上書きすることはお勧めできません。」 Except()を動作させるには他にも優れた方法があります。 –
@Henk Holtermanをオーバーライドする等価演算子==は推奨されません。 Equalsをオーバーライドすることはお勧めできません。 –
@SouhaiebBesbes - '=='と 'Equals()'を同期させておくことが強く推奨されています。 –