ओवरराइड करने का सही तरीका मैंने पहले कभी ऐसा नहीं किया है, इसलिए मैं उम्मीद कर रहा था कि कोई मुझे मेरी कक्षा के लिए छोड़कर() और GetHashCode() के ओवरराइड को लागू करने का सही दिखा सकता है।बराबर() और 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 पर एक नज़र ले लिया है, लेकिन मैं उम्मीद कर रही थी किसी ने मुझे मेरे अपने उदाहरण के भीतर दिखा सकता है।
किसी भी मदद की सराहना की जाएगी।
इस तरह अपनी कक्षा पर GetHashCode() धन्यवाद
उस पृष्ठ पर जो आपने लिंक किया था: "गैर-अपरिवर्तनीय प्रकारों में ऑपरेटर == को ओवरराइड करना अच्छा नहीं है।" कार्य() काम करने के लिए अन्य और बेहतर तरीके हैं। –
@ हेनक होल्टरमैन समानता ऑपरेटर ओवरराइडिंग == की अनुशंसा नहीं की जाती है; ओवरराइडिंग बराबर की सिफारिश नहीं की जाती है। –
@ सौहाइबबेस - यह (बहुत दृढ़ता से) सिंक में '==' और 'बराबर()' रखने के लिए अनुशंसित है। –