Cette documentation est archivée et n’est pas conservée.

ValueType.GetHashCode, méthode

Mise à jour : novembre 2007

Retourne le code de hachage pour cette instance.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)

public override int GetHashCode()
public int GetHashCode()
public override function GetHashCode() : int

Valeur de retour

Type : System.Int32
Entier signé 32 bits qui est le code de hachage pour cette instance.

La méthode GetHashCode s'applique aux types dérivés de ValueType. Un ou plusieurs champs du type dérivé sont utilisés pour calculer la valeur de retour. Si vous appelez la méthode GetHashCode du type dérivé, il est peu probable que la valeur de retour puisse être utilisée comme clé dans une table de hachage. En outre, si la valeur d'un ou plusieurs champs change, il sera peut-être impossible d'utiliser la valeur de retour comme clé dans une table de hachage. Dans les deux cas, envisagez d'écrire votre propre implémentation de la méthode GetHashCode, capable de mieux représenter le concept d'un code de hachage pour le type.

Pour plus d'informations, consultez Object.GetHashCode et System.Collections.Hashtable.

L'exemple suivant illustre comment la méthode GetHashCode peut être substituée par un type valeur dérivé.

	public struct Complex 
	{
		public double m_Re;
		public double m_Im;

		public override bool Equals( object ob ){
			if( ob is Complex ) {
				Complex c = (Complex) ob;
				return m_Re==c.m_Re && m_Im==c.m_Im;
			}
			else {
				return false;
			}
		}

		public override int GetHashCode(){
			return m_Re.GetHashCode() ^ m_Im.GetHashCode();
		}
	}


public class Complex
{
    public double mRe;
    public double mIm;

    public boolean Equals(Object ob)
    {
        if (ob instanceof Complex) {
            Complex c = (Complex)ob;
            return mRe == c.mRe && mIm == c.mIm;
        }
        else {
            return false;
        }
    } //Equals

    public int GetHashCode()
    {
        return ((System.Double)mRe).GetHashCode() ^ ((System.Double)mIm).
            GetHashCode();
    } //GetHashCode
} //Complex


	public class Complex 
	{
		public var m_Re : double;
		public var m_Im : double;

		public override function Equals( ob ) : Boolean{
			if( ob.GetType() == Complex ) {
				var c : Complex = Complex(ob);
				return m_Re==c.m_Re && m_Im==c.m_Im;
			}
			else {
				return false;
			}
		}

		public override function GetHashCode() : int{
			return m_Re.GetHashCode() ^ m_Im.GetHashCode();
		}

                public static function main() {
                       var x : Complex = new Complex();
                       x.m_Re = 1;
                       x.m_Im = 2;
                       var y : Complex = new Complex();
                       y.m_Re = 2;
                       y.m_Im = 1;

                       Console.Write(x.Equals(y));                       
                }
	}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC, Xbox 360

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Pris en charge dans : 3.5, 2.0, 1.0

XNA Framework

Pris en charge dans : 2.0, 1.0
Afficher: