Fio*_*ite 1 c# inheritance equals gethashcode
我对C#中Equals和GetHashCode的默认行为有点困惑.假设我有两个类,一个派生自另一个:
public abstract class Question
{
public string QuestionText
{
get;
set;
}
public override bool Equals(object obj)
{
if (obj is Question)
{
Question q = (Question)obj;
return this.QuestionText.Equals(q.QuestionText);
}
else
{
return false;
}
}
public override int GetHashCode()
{
int hash = 13;
hash = (hash * 7) + this.QuestionText.GetHashCode();
return hash;
}
}
public class QuestionTrueFalse : Question
{
public bool CorrectAnswer
{
get;
set;
}
public override bool Equals(object obj)
{
return base.Equals(q);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
派生类不会影响一个项是否等于另一个项,我仍然希望它仅基于QuestionText属性.
我是否需要重写Equals和GetHashCode来引用基本实现,就像我在这里所做的那样,还是默认行为?