Busco una igualdad entre dos instancias de esta estructura.Igualdad de dos estructuras en C#
public struct Serie<T>
{
T[] X;
double[] Y;
public Serie(T[] x, double[] y)
{
X = x;
Y = y;
}
public override bool Equals(object obj)
{
return obj is Serie<T> && this == (Serie<T>)obj;
}
public static bool operator ==(Serie<T> s1, Serie<T> s2)
{
return s1.X == s2.X && s1.Y == s2.Y;
}
public static bool operator !=(Serie<T> s1, Serie<T> s2)
{
return !(s1 == s2);
}
Esto no funciona. ¿Qué me estoy perdiendo?
double[] xa = { 2, 3 };
double[] ya = { 1, 2 };
double[] xb = { 2, 3 };
double[] yb = { 1, 2 };
Serie<double> A = new Serie<double>(xa, ya);
Serie<double> B = new Serie<double>(xb, yb);
Assert.AreEqual(A, B);
utilizando el método de extensión SequenceEqual() de LINQ. Puede comparar contenidos de la matriz. – LBushkin
@LBushkin: Sí (debería haber mencionado eso), pero será algo ineficaz en comparación con una implementación que se basa en arreglos. –
Posiblemente, pero tiendo a preferir la claridad sobre el rendimiento, a menos que haya un problema de rendimiento medido. Por curiosidad, ¿qué te hace creer que 'SequenceEquals' sería ineficiente? – LBushkin