validos usar unario poner para operadores operador lógicos comparaciones como asignacion aritmetico c# c#-4.0

c# - usar - ¿Cómo verificar el valor nulo en el operador== método?



operadores de asignacion en c# (2)

Considere la siguiente clase:

public class Code : IEquatable<Code> { public string Value { get; set; } public override bool Equals(object obj) { return Equals(obj as Code); } public override bool Equals(Code code) { if (code == null) return false; return this.Value == code.Value; } public static bool operator ==(Code a, Code b) { if (a == null) return b == null; return a.Equals(b); } public static bool operator !=(Code a, Code b) { if (a == null) return b!= null; return !a.Equals(b); } // rest of the class here }

Ahora intenta usar el método == :

Code a = new Code(); Code b = new Code(); Console.WriteLine("The same? {0}", a==b);

El resultado es una StackOverflowException porque el método == se llama a sí mismo cuando comprueba si es nulo.

Pero si saco el cheque nulo:

public static bool operator ==(Code a, Code b) { return a.Equals(b); }

Tengo una NullReferenceException !

¿Cuál es la forma correcta de definir estos métodos?


También puedes usar (object)a == null