Si usa el propio menú de refactorización de Visual Studio para agregar una implementación GetHashCode a una clase como esta:
y seleccione la única propiedad int de la clase:
genera este código en .NET Framework:
public override int GetHashCode()
{
return -1937169414 + Value.GetHashCode();
}
(
HashCode.Combine(Value)
en su lugar, genera en .NET Core, que no estoy seguro si implica el mismo valor)
¿Qué tiene de especial este valor? ¿Por qué Visual Studio no usa
Value.GetHashCode()
directamente? Según tengo entendido, realmente no afecta la distribución de hash. Como es solo una suma, los valores consecutivos aún se acumularían juntos.
EDITAR: solo intenté esto con diferentes clases con
Value
propiedades, pero aparentemente el nombre de la propiedad afecta el número generado. Por ejemplo, si cambia el nombre de la propiedad a Halue
, el número se convierte en 387336856.
0 Comentarios