Я вижу, что две ссылки относятся к объектам с одинаковыми свойствами, но это не то, что здесь тестируется. Он проверяет, являются ли они ссылками на один и тот же объект или равны ли они. Ваш класс StatResult
не переопределяет Equals
/ GetHashCode
, поэтому два объекта с одинаковыми значениями будут рассматриваться как "разные" для тестирования.
Вы должны переопределить Equals
и GetHashCode
, чтобы два объекта считались равными соответственно. Я бы также предложил сделать тип неизменяемым, а также следовать обычным правилам именования .NET для свойств:
public sealed class StatResult : IEquatable<StatResult>
{
public string Word { get; private set; }
public UInt64 Views { get; private set; }
public StatResult(string word, ulong views)
{
this.word = word;
this.views = views;
}
public override string ToString()
{
return String.Format("{0};{1}", word, views);
}
public override int GetHashCode()
{
int hash = 23;
hash = hash * 31 + Word == null ? 0 : Word.GetHashCode();
hash = hash * 31 + Views.GetHashCode();
return hash;
}
public override bool Equals(object other)
{
return Equals(other as StatResult);
}
public bool Equals(StatResult other)
{
return other != null &&
this.Word == other.Word &&
this.Views == other.Views;
}
}
Ваша конструкция просто изменится на:
new StatResult("test", 98318),
new StatResult("test board", 7801),
(и аналогично в вашем производственном коде).