El uso del reflector o dotPeek, la puesta en práctica de la sobrecarga System.Linq.Data.Binary operador de igualdad se ve así:operador de igualdad dentro de la aplicación operador de igualdad
[Serializable, DataContract]
public sealed class Binary : IEquatable<Binary>
{
...
public static bool operator ==(Binary binary1, Binary binary2)
{
return ((binary1 == binary2) || (((binary1 == null) && (binary2 == null)) || (((binary1 != null) && (binary2 != null)) && binary1.EqualsTo(binary2))));
}
Debo estar perdiendo algo obvio, o hay un mecanismo que está teniendo lugar y del cual no estoy enterado (como llamar implícitamente objeto == dentro del cuerpo?). Lo admito, rara vez o nunca necesito sobrecargar a los operadores estándar.
¿Por qué esta implementación no da como resultado una recursión infinita (que una simple prueba muestra que no se repite infinitamente)? La primera expresión condicional es binary1 == binary2, dentro de la implementación de la sobrecarga del operador que recibiría una llamada si usabas binary1 == binary2 fuera de la implementación, y yo habría pensado, dentro también.
Lo siento, quise decir Reflector, no Resharper en mi publicación (que corregí). Es interesante que el Resharper actual lo haga bien, pero DotPeek (por la misma compañía) no lo hace. – hatchet