.NET equivalente a la función java.util.Arrays.hashCode () para matrices de tipos intrínsecos?

StackOverflow https://stackoverflow.com/questions/1178176

Pregunta

¿Hay a.NET clase de utilidad equivalente a java.util.Arrays.hashCode () para matrices de tipos intrínsecos como int [], short [], flotar [], etc.?

Obviamente, podría escribir mi propia clase de utilidad, pero estaba tratando de encontrar uno ya está disponible en la plataforma .NET.

¿Fue útil?

Solución

En .NET 4.0 arrays apoyarán este a través de la interfaz IStructuralEquatable , pero hasta ese punto que tendrá que hacerlo usted mismo me temo.

Otros consejos

Estoy bastante seguro de que no hay nada en el propio marco que hace esto. Es muy posible que algunas implementaciones de terceros, pero no hay nada incorporado (y pública).

No estoy al tanto de tal cosa siendo incorporado en .Net hasta la versión 3.5, aunque .Net 4 es muy probable que apoyen de forma nativa a través de la IStructuralEquatable interfaz que Array implementará (gracias a Greg Haya por señalarlo).

Esto es una implementación simple usando un método de extensión en IEnumerable.

int HashContents<T>(this IEnumerable<T> enumerable)
{
    int hash = 0x218A9B2C;
    foreach (var item in enumerable)
    {
        int thisHash = item.GetHashCode();
        //mix up the bits.
        hash = thisHash ^ ((hash << 5) + hash);
    }
    return hash;
}

Esto dará diferentes hashcodes para {0,0} y {0,0,0}.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top