equalsignorecase equal entre ejemplos diferencia and c# .net equals

equal - or== c#



Implementando GetHashCode correctamente (1)

Digamos que su clase se ve así:

class Frob { public string Foo { get; set; } public int Bar { get; set; } public double FooBar { get; set; } }

Digamos que define iguales para que dos instancias de Frob sean iguales si su Foo y su Bar son iguales, pero FooBar no importa.

Entonces debes definir GetHashCode en términos de Foo y Bar . Una forma es así:

return this.Foo.GetHashCode() * 17 + this.Bar.GetHashCode();

Básicamente, solo desea incorporar todos los campos que intervienen en la definición de la igualdad. Una forma es simplemente seguir acumulando y multiplicando por 17 como lo he hecho. Es rápido, es sencillo, es correcto y, por lo general, ofrece una buena distribución.

Esta pregunta ya tiene una respuesta aquí:

Me gustaría saber de la comunidad cómo debería implementar GetHashCode (o reemplazarlo) para mi objeto. Entiendo que debo hacerlo si anulo el método de iguales. Lo he implementado una buena cantidad de veces, a veces simplemente llamando al método base. Entiendo que mi objeto debe ser igual a otra instancia del objeto si contiene los mismos detalles (miembros). ¿Cuál es la mejor manera de obtener un código hash de los miembros de la clase?