String.GetHashCode String.GetHashCode String.GetHashCode String.GetHashCode Method

定義

オーバーロード

GetHashCode(ReadOnlySpan<Char>, StringComparison) GetHashCode(ReadOnlySpan<Char>, StringComparison) GetHashCode(ReadOnlySpan<Char>, StringComparison) GetHashCode(ReadOnlySpan<Char>, StringComparison)

指定された規則を使用して、指定された読み取り専用の文字スパンのハッシュ コードを返します。Returns the hash code for the provided read-only character span using the specified rules.

GetHashCode(StringComparison) GetHashCode(StringComparison) GetHashCode(StringComparison) GetHashCode(StringComparison)

指定された規則を使用して、この文字列のハッシュ コードを返します。Returns the hash code for this string using the specified rules.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

この文字列のハッシュ コードを返します。Returns the hash code for this string.

GetHashCode(ReadOnlySpan<Char>) GetHashCode(ReadOnlySpan<Char>) GetHashCode(ReadOnlySpan<Char>) GetHashCode(ReadOnlySpan<Char>)

指定された読み取り専用文字スパンのハッシュ コードを返します。Returns the hash code for the provided read-only character span.

GetHashCode(ReadOnlySpan<Char>, StringComparison) GetHashCode(ReadOnlySpan<Char>, StringComparison) GetHashCode(ReadOnlySpan<Char>, StringComparison) GetHashCode(ReadOnlySpan<Char>, StringComparison)

指定された規則を使用して、指定された読み取り専用の文字スパンのハッシュ コードを返します。Returns the hash code for the provided read-only character span using the specified rules.

public:
 static int GetHashCode(ReadOnlySpan<char> value, StringComparison comparisonType);
public static int GetHashCode (ReadOnlySpan<char> value, StringComparison comparisonType);
static member GetHashCode : ReadOnlySpan<char> * StringComparison -> int
Public Shared Function GetHashCode (value As ReadOnlySpan(Of Char), comparisonType As StringComparison) As Integer

パラメーター

value
ReadOnlySpan<Char>

読み取り専用の文字スパン。A read-only character span.

comparisonType
StringComparison StringComparison StringComparison StringComparison

比較で使用する規則を指定する列挙値の 1 つ。One of the enumeration values that specifies the rules to use in the comparison.

戻り値

32 ビット符号付き整数ハッシュ コード。A 32-bit signed integer hash code.

GetHashCode(StringComparison) GetHashCode(StringComparison) GetHashCode(StringComparison) GetHashCode(StringComparison)

指定された規則を使用して、この文字列のハッシュ コードを返します。Returns the hash code for this string using the specified rules.

public:
 int GetHashCode(StringComparison comparisonType);
public int GetHashCode (StringComparison comparisonType);
override this.GetHashCode : StringComparison -> int
Public Function GetHashCode (comparisonType As StringComparison) As Integer

パラメーター

comparisonType
StringComparison StringComparison StringComparison StringComparison

比較で使用する規則を指定する列挙値の 1 つ。One of the enumeration values that specifies the rules to use in the comparison.

戻り値

32 ビット符号付き整数ハッシュ コード。A 32-bit signed integer hash code.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

この文字列のハッシュ コードを返します。Returns the hash code for this string.

public:
 override int GetHashCode();
public override int GetHashCode ();
override this.GetHashCode : unit -> int
Public Overrides Function GetHashCode () As Integer

戻り値

32 ビット符号付き整数ハッシュ コード。A 32-bit signed integer hash code.

次の例は、 GetHashCodeさまざまな入力文字列を使用してメソッドを示しています。The following example demonstrates the GetHashCode method using various input strings.

using namespace System;

void DisplayHashCode( String^ Operand )
{
   int HashCode = Operand->GetHashCode();
   Console::WriteLine( "The hash code for \"{0}\" is: 0x{1:X8}, {1}", Operand, HashCode );
}

int main()
{
   DisplayHashCode( "" );
   DisplayHashCode( "a" );
   DisplayHashCode( "ab" );
   DisplayHashCode( "abc" );
   DisplayHashCode( "abd" );
   DisplayHashCode( "abe" );
   DisplayHashCode( "abcdef" );
   DisplayHashCode( "abcdeg" );
   DisplayHashCode( "abcdeh" );
   DisplayHashCode( "abcdei" );
   DisplayHashCode( "Abcdeg" );
   DisplayHashCode( "Abcdeh" );
   DisplayHashCode( "Abcdei" );
}

/*
This example displays output like the following:
      The hash code for "" is: 0x2D2816FE, 757602046
      The hash code for "a" is: 0xCDCAB7BF, -842352705
      The hash code for "ab" is: 0xCDE8B7BF, -840386625
      The hash code for "abc" is: 0x2001D81A, 536991770
      The hash code for "abd" is: 0xC2A94CB5, -1029092171
      The hash code for "abe" is: 0x6550C150, 1699791184
      The hash code for "abcdef" is: 0x1762906D, 392335469
      The hash code for "abcdeg" is: 0x1763906D, 392401005
      The hash code for "abcdeh" is: 0x175C906D, 391942253
      The hash code for "abcdei" is: 0x175D906D, 392007789
      The hash code for "Abcdeg" is: 0x1763954D, 392402253
      The hash code for "Abcdeh" is: 0x175C954D, 391943501
      The hash code for "Abcdei" is: 0x175D954D, 392009037
*/
using System;

class GetHashCode 
{
    public static void Main() 
    {
        DisplayHashCode( "" );
        DisplayHashCode( "a" );
        DisplayHashCode( "ab" );
        DisplayHashCode( "abc" );
        DisplayHashCode( "abd" );
        DisplayHashCode( "abe" );
        DisplayHashCode( "abcdef" );
        DisplayHashCode( "abcdeg" );
        DisplayHashCode( "abcdeh" );
        DisplayHashCode( "abcdei" );
        DisplayHashCode( "Abcdeg" );
        DisplayHashCode( "Abcdeh" );
        DisplayHashCode( "Abcdei" );
    }

    static void DisplayHashCode( String Operand )
    {
        int     HashCode = Operand.GetHashCode( );
        Console.WriteLine("The hash code for \"{0}\" is: 0x{1:X8}, {1}",
                          Operand, HashCode );
    }
}
/*
      This example displays output like the following:
      The hash code for "" is: 0x2D2816FE, 757602046
      The hash code for "a" is: 0xCDCAB7BF, -842352705
      The hash code for "ab" is: 0xCDE8B7BF, -840386625
      The hash code for "abc" is: 0x2001D81A, 536991770
      The hash code for "abd" is: 0xC2A94CB5, -1029092171
      The hash code for "abe" is: 0x6550C150, 1699791184
      The hash code for "abcdef" is: 0x1762906D, 392335469
      The hash code for "abcdeg" is: 0x1763906D, 392401005
      The hash code for "abcdeh" is: 0x175C906D, 391942253
      The hash code for "abcdei" is: 0x175D906D, 392007789
      The hash code for "Abcdeg" is: 0x1763954D, 392402253
      The hash code for "Abcdeh" is: 0x175C954D, 391943501
      The hash code for "Abcdei" is: 0x175D954D, 392009037
*/
Module GetHashCode
    Sub Main()
        DisplayHashCode("")
        DisplayHashCode("a")
        DisplayHashCode("ab")
        DisplayHashCode("abc")
        DisplayHashCode("abd")
        DisplayHashCode("abe")
        DisplayHashCode("abcdef")
        DisplayHashCode("abcdeg")
        DisplayHashCode("abcdeh")
        DisplayHashCode("abcdei")
        DisplayHashCode("Abcdeg")
        DisplayHashCode("Abcdeh")
        DisplayHashCode("Abcdei")
    End Sub
       
    Sub DisplayHashCode(Operand As String)
        Dim HashCode As Integer = Operand.GetHashCode()
        Console.WriteLine("The hash code for ""{0}"" is: 0x{1:X8}, {1}", 
                          Operand, HashCode)
    End Sub 
End Module 
' This example displays output like the following:
'       The hash code for "" is: 0x2D2816FE, 757602046
'       The hash code for "a" is: 0xCDCAB7BF, -842352705
'       The hash code for "ab" is: 0xCDE8B7BF, -840386625
'       The hash code for "abc" is: 0x2001D81A, 536991770
'       The hash code for "abd" is: 0xC2A94CB5, -1029092171
'       The hash code for "abe" is: 0x6550C150, 1699791184
'       The hash code for "abcdef" is: 0x1762906D, 392335469
'       The hash code for "abcdeg" is: 0x1763906D, 392401005
'       The hash code for "abcdeh" is: 0x175C906D, 391942253
'       The hash code for "abcdei" is: 0x175D906D, 392007789
'       The hash code for "Abcdeg" is: 0x1763954D, 392402253
'       The hash code for "Abcdeh" is: 0x175C954D, 391943501
'       The hash code for "Abcdei" is: 0x175D954D, 392009037

注釈

GetHashCode動作は、実装によって異なります。これは、共通言語ランタイムのあるバージョンから別のバージョンに変更される可能性があります。The behavior of GetHashCode is dependent on its implementation, which might change from one version of the common language runtime to another. これが発生する理由は、のGetHashCodeパフォーマンスを向上させるためです。A reason why this might happen is to improve the performance of GetHashCode.

重要

2つの文字列オブジェクトが等しい場合GetHashCode 、メソッドは同一の値を返します。If two string objects are equal, the GetHashCode method returns identical values. ただし、一意の文字列値ごとに一意のハッシュコード値はありません。However, there is not a unique hash code value for each unique string value. 異なる文字列は、同じハッシュコードを返すことができます。Different strings can return the same hash code.

ハッシュコード自体は、安定しているとは限りません。The hash code itself is not guaranteed to be stable. 同じ文字列のハッシュコードは、.net の実装間、.net の複数のバージョン間、.net の1つのバージョンの .net プラットフォーム (32 ビットや64ビットなど) で異なる場合があります。Hash codes for identical strings can differ across .NET implementations, across .NET versions, and across .NET platforms (such as 32-bit and 64-bit) for a single version of .NET. 場合によっては、アプリケーションドメインによって異なる場合もあります。In some cases, they can even differ by application domain. これは、同じプログラムの2回目の実行で異なるハッシュコードが返される可能性があることを意味します。This implies that two subsequent runs of the same program may return different hash codes.

このため、ハッシュコードは、作成されたアプリケーションドメインの外部では使用できません。また、コレクションのキーフィールドとして使用することは避け、永続化しないでください。As a result, hash codes should never be used outside of the application domain in which they were created, they should never be used as key fields in a collection, and they should never be persisted.

最後に、暗号ハッシュ関数によって返される値の代わりに、暗号強度の高いハッシュが必要な場合は、ハッシュコードを使用しないでください。Finally, don't use the hash code instead of a value returned by a cryptographic hashing function if you need a cryptographically strong hash. 暗号化ハッシュの場合System.Security.Cryptography.HashAlgorithmは、クラスまたはSystem.Security.Cryptography.KeyedHashAlgorithmクラスから派生したクラスを使用します。For cryptographic hashes, use a class derived from the System.Security.Cryptography.HashAlgorithm or System.Security.Cryptography.KeyedHashAlgorithm class.

ハッシュコードの詳細についてはObject.GetHashCode、「」を参照してください。For more information about hash codes, see Object.GetHashCode.

デスクトップアプリでは、 <UseRandomizedStringHashAlgorithm > 要素を使用して、アプリケーションドメインごとに一意のハッシュコードを生成できます。In desktop apps, you can use the <UseRandomizedStringHashAlgorithm> element to generate unique hash codes on a per application domain basis. これにより、競合の数を減らし、ハッシュテーブルを使用する挿入と参照の全体的なパフォーマンスを向上させることができます。This can reduce the number of collisions and improve the overall performance of insertions and lookups that use hash tables. 次の例は、 <UseRandomizedStringHashAlgorithm > 要素の使用方法を示しています。The following example shows how to use the <UseRandomizedStringHashAlgorithm> element. このクラスはDisplayString 、プライベート文字列s定数を含むクラスを定義します。値は "This is a string" です。It defines a DisplayString class that includes a private string constant, s, whose value is "This is a string." また、メソッドを実行しているアプリケーション ドメインの名前と共に文字列値とハッシュ コードを表示する ShowStringHashCode メソッドも含まれています。It also includes a ShowStringHashCode method that displays the string value and its hash code along with the name of the application domain in which the method is executing.

using System;

public class Example
{
   public static void Main()
   {
      // Show hash code in current domain.
      DisplayString display = new DisplayString();
      display.ShowStringHashCode();
      
      // Create a new app domain and show string hash code.
      AppDomain domain = AppDomain.CreateDomain("NewDomain");
      var display2 = (DisplayString) domain.CreateInstanceAndUnwrap(typeof(Example).Assembly.FullName, 
                                                          "DisplayString");   
      display2.ShowStringHashCode();
   }
}

public class DisplayString : MarshalByRefObject
{
   private String s = "This is a string.";
   
   public override bool Equals(Object obj)
   {
      String s2 = obj as String; 
      if (s2 == null)
         return false;
      else
         return s == s2; 
   }

   public bool Equals(String str)
   {
      return s == str;
   }    
   
   public override int GetHashCode()
   {
      return s.GetHashCode();
   }
   
   public override String ToString() 
   {
      return s;
   }

   public void ShowStringHashCode()
   {
      Console.WriteLine("String '{0}' in domain '{1}': {2:X8}",
                        s, AppDomain.CurrentDomain.FriendlyName, 
                        s.GetHashCode());
   }
}
Module Example
   Public Sub Main()
      ' Show hash code in current domain.
      Dim display As New DisplayString()
      display.ShowStringHashCode()
      
      ' Create a new app domain and show string hash code.
      Dim domain As AppDomain = AppDomain.CreateDomain("NewDomain")
      Dim display2 = CType(domain.CreateInstanceAndUnwrap(GetType(Example).Assembly.FullName, 
                                                          "DisplayString"), DisplayString)   
      display2.ShowStringHashCode()
   End Sub
End Module

Public Class DisplayString : Inherits MarshalByRefObject

   Private s As String = "This is a string."
   
   Public Overrides Function Equals(obj As Object) As Boolean
      Dim s2 As String = TryCast(obj, String)
      If s2 Is Nothing Then
         Return False
      Else
         Return s = s2 
      End If
   End Function

   Public Overloads Function Equals(str As String) As Boolean
      Return s = str
   End Function    
   
   Public Overrides Function GetHashCode() As Integer
      Return s.GetHashCode()
   End Function
   
   Public Overrides Function ToString() As String
      Return s
   End Function

   Public Sub ShowStringHashCode()
      Console.WriteLine("String '{0}' in domain '{1}': {2:X8}",
                        s, AppDomain.CurrentDomain.FriendlyName, 
                        s.GetHashCode())
   End Sub
End Class

構成ファイルを指定せずにこの例を実行すると、次のような出力が表示されます。When you run the example without supplying a configuration file, it displays output similar to the following. 文字列のハッシュ コードが 2 つアプリケーション ドメインで同じであることに注意してください。Note that the hash codes for the string are identical in the two application domains.

String 'This is a string.' in domain 'PerDomain.exe': 941BCEAC  
String 'This is a string.' in domain 'NewDomain': 941BCEAC

ただし、例のディレクトリに次の構成ファイルを追加して例を実行すると、同じ文字列のハッシュ コードがアプリケーション ドメインによって異なります。However, if you add the following configuration file to the example's directory and then run the example, the hash codes for the same string will differ by application domain.

<?xml version ="1.0"?>  
<configuration>  
   <runtime>  
      <UseRandomizedStringHashAlgorithm enabled="1" />  
   </runtime>  
</configuration>

構成ファイルが存在する場合、次の出力が表示されます。When the configuration file is present, the example displays the following output:

String 'This is a string.' in domain 'PerDomain.exe': 5435776D
String 'This is a string.' in domain 'NewDomain': 75CC8236

重要

ハッシュ コードは、ハッシュ テーブルからキーを持つオブジェクトを効率的に挿入および取得するために使用されます。Hash codes are used to insert and retrieve keyed objects from hash tables efficiently. ただし、ハッシュ コードは、文字列を一意に識別しません。However, hash codes don't uniquely identify strings. 同一の文字列は同じハッシュコードを持ちますが、共通言語ランタイムは同じハッシュコードを異なる文字列に割り当てることもできます。Identical strings have equal hash codes, but the common language runtime can also assign the same hash code to different strings. さらに、ハッシュコードは、.NETのバージョン、単一バージョンでプラットフォームとアプリケーション ドメインを変更できます。In addition, hash codes can vary by version of .NET, by platform within a single version, and by application domain. このため、ハッシュコードの値をシリアル化したり永続化したり、ハッシュテーブルまたはディクショナリのキーとして使用したりしないでください。Because of this, you should not serialize or persist hash code values, nor should you use them as keys in a hash table or dictionary.

ハッシュコードとGetHashCodeメソッドの使用方法の詳細については、 Object.GetHashCode「」を参照してください。For additional information about the use of hash codes and the GetHashCode method, see Object.GetHashCode.

注意 (呼び出し元)

によってGetHashCode()返される値は、プラットフォームに依存します。The value returned by GetHashCode() is platform-dependent. これは、.NET Framework の32ビットバージョンと64ビットバージョンで異なります。It differs on the 32-bit and 64-bit versions of the .NET Framework. また、.NET Framework と .NET Core のバージョンによって異なる場合もあります。It also can differ between versions of the .NET Framework and .NET Core.

こちらもご覧ください

GetHashCode(ReadOnlySpan<Char>) GetHashCode(ReadOnlySpan<Char>) GetHashCode(ReadOnlySpan<Char>) GetHashCode(ReadOnlySpan<Char>)

指定された読み取り専用文字スパンのハッシュ コードを返します。Returns the hash code for the provided read-only character span.

public:
 static int GetHashCode(ReadOnlySpan<char> value);
public static int GetHashCode (ReadOnlySpan<char> value);
static member GetHashCode : ReadOnlySpan<char> -> int
Public Shared Function GetHashCode (value As ReadOnlySpan(Of Char)) As Integer

パラメーター

value
ReadOnlySpan<Char>

読み取り専用の文字スパン。A read-only character span.

戻り値

32 ビット符号付き整数ハッシュ コード。A 32-bit signed integer hash code.

適用対象