あなたが自分自身に尋ねなければならない質問は、2つのインスタンスがNewChildren
同じであるときですか?そこにリストがあるので、これは答えるのが簡単な質問ではないかもしれません。これを定義したら、クラスにequalityメソッドを実装する必要があります。
public class NewChildren
{
public double[] fitnessValue{get;set;}
public int[] locationScheme{get;set;}
public double crowdingDistance{get;set;}
public bool override Equals(object other)
{
// ... implement your rules for equality here
}
}
これを行うには、常にMicrosoftのガイドラインに従う必要があります。平等のオーバーライドはそれほど単純ではありませんが、複雑ではありません。例として、同じ要素を持つすべての配列がある場合:
public bool override Equals(object other)
{
if (other == null || !(other is NewChildren))
{
return false;
}
var another = (NewChildren)other;
return AreEquivalent(this.fitnessValue, another.fitnessValue)
&& AreEquivalent(this.locationScheme, another.locationScheme)
&& AreEquivalent(this.crowdingDistance, another.crowdingDistance);
}
public static bool AreEquivalent<T>(T[] a, T[] b)
{
return a1.OrderBy(a => a).SequenceEqual(a2.OrderBy(a => a));
}
配列の等式の実装はここから取られました。このリファレンスを使用して最適化できます。