ConsoleKeyInfo.GetHashCode ConsoleKeyInfo.GetHashCode ConsoleKeyInfo.GetHashCode ConsoleKeyInfo.GetHashCode Method

Definizione

Restituisce il codice hash per l'oggetto ConsoleKeyInfo corrente.Returns the hash code for the current ConsoleKeyInfo object.

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

Restituisce

Codice hash di un intero con segno a 32 bit.A 32-bit signed integer hash code.

Esempi

Nell'esempio seguente viene illustrato il GetHashCode (metodo).The following example demonstrates the GetHashCode method.

using namespace System;
using namespace System::Text;

String^ KeyCombination(ConsoleKeyInfo sourceCki);

void main()
{
   String^ k1 = "\nEnter a key ......... ";
   String^ key1 = "";
   String^ hashCodeFmt = "The hash code for the {0} key is {1}.";
   String^ prompt = "Press the escape key (ESC) to quit, " + 
                    "or any other key to continue.";
   ConsoleKeyInfo cki1;
   int hashCode = 0;

   // The Console.TreatControlCAsInput property prevents this example from
   // ending if you press CTL+C, however all other operating system keys and 
   // shortcuts, such as ALT+TAB or the Windows Logo key, are still in effect. 
   //
   Console::TreatControlCAsInput = true;

   // Request that the user enter two key presses. A key press and any 
   // combination shift, CTRL, and ALT modifier keys is permitted.
   do 
   {
      Console::Write(k1);
      cki1 = Console::ReadKey(false);
      Console::WriteLine();

      key1 = KeyCombination(cki1);
      hashCode = cki1.GetHashCode();
      Console::WriteLine(hashCodeFmt, key1, hashCode);

      Console::WriteLine(prompt);
      cki1 = Console::ReadKey(true);
   } while (cki1.Key != ConsoleKey::Escape);
   // Note: This example requires the Escape (Esc) key.
}

// The KeyCombination() method creates a string that specifies what 
// key and what combination of shift, CTRL, and ALT modifier keys 
// were pressed simultaneously.

static String^ KeyCombination(ConsoleKeyInfo sourceCki)
{
   StringBuilder^ sb = gcnew StringBuilder();
   sb->Length = 0;
   String^ keyCombo;
   if (sourceCki.Modifiers != (ConsoleModifiers) 0)
      {
      if ((sourceCki.Modifiers & ConsoleModifiers::Alt) != (ConsoleModifiers) 0)
         sb->Append("ALT+");
      if ((sourceCki.Modifiers & ConsoleModifiers::Shift) != (ConsoleModifiers) 0)
         sb->Append("SHIFT+");
      if ((sourceCki.Modifiers & ConsoleModifiers::Control) != (ConsoleModifiers) 0)
         sb->Append("CTL+");
      }
   sb->Append(sourceCki.Key.ToString());
   keyCombo = sb->ToString();
   return keyCombo;
}


/*
This example produces results similar to the following output:

Enter a key ......... a
The hash code for the A key is 97.
Press the escape key (ESC) to quit, or any other key to continue.

Enter a key ......... S
The hash code for the SHIFT+S key is 83.
Press the escape key (ESC) to quit, or any other key to continue.

Enter a key .........
The hash code for the ALT+SHIFT+CTL+J key is 7.
Press the escape key (ESC) to quit, or any other key to continue.

*/
// This example demonstrates the ConsoleKeyInfo.GetHashCode() method.

using System;
using System.Text;

class Sample 
{
    public static void Main() 
    {
    string k1 = "\nEnter a key ......... ";
    string key1 = "";
    string hashCodeFmt = "The hash code for the {0} key is {1}.";
    string prompt = "Press the escape key (ESC) to quit, " + 
                    "or any other key to continue.";
    ConsoleKeyInfo cki1;
    int hashCode = 0;

//
// The Console.TreatControlCAsInput property prevents this example from
// ending if you press CTL+C, however all other operating system keys and 
// shortcuts, such as ALT+TAB or the Windows Logo key, are still in effect. 
//
    Console.TreatControlCAsInput = true;

// Request that the user enter two key presses. A key press and any 
// combination shift, CTRL, and ALT modifier keys is permitted.
    do 
    {
        Console.Write(k1);
        cki1 = Console.ReadKey(false);
        Console.WriteLine();
//
        key1 = KeyCombination(cki1);
        hashCode = cki1.GetHashCode();
        Console.WriteLine(hashCodeFmt, key1, hashCode);
//
        Console.WriteLine(prompt);
        cki1 = Console.ReadKey(true);
    } while (cki1.Key != ConsoleKey.Escape);
// Note: This example requires the Escape (Esc) key.
    }

// The KeyCombination() method creates a string that specifies what 
// key and what combination of shift, CTRL, and ALT modifier keys 
// were pressed simultaneously.

    protected static string KeyCombination(ConsoleKeyInfo sourceCki)
    {
    StringBuilder sb = new StringBuilder();
    sb.Length = 0;
    string keyCombo;
    if (sourceCki.Modifiers != 0)
        {
        if ((sourceCki.Modifiers & ConsoleModifiers.Alt) != 0)
            sb.Append("ALT+");
        if ((sourceCki.Modifiers & ConsoleModifiers.Shift) != 0)
            sb.Append("SHIFT+");
        if ((sourceCki.Modifiers & ConsoleModifiers.Control) != 0)
            sb.Append("CTL+");
        }
    sb.Append(sourceCki.Key.ToString());
    keyCombo = sb.ToString();
    return keyCombo;
    }
}

/*
This example produces results similar to the following output:

Enter a key ......... a
The hash code for the A key is 97.
Press the escape key (ESC) to quit, or any other key to continue.

Enter a key ......... S
The hash code for the SHIFT+S key is 83.
Press the escape key (ESC) to quit, or any other key to continue.

Enter a key .........
The hash code for the ALT+SHIFT+CTL+J key is 7.
Press the escape key (ESC) to quit, or any other key to continue.

*/
' This example demonstrates the ConsoleKeyInfo.GetHashCode() method.
Imports System
Imports System.Text

Class Sample
    Public Shared Sub Main() 
        Dim k1 As String = vbCrLf & "Enter a key ......... "
        Dim key1 As String = ""
        Dim hashCodeFmt As String = "The hash code for the {0} key is {1}."
        Dim prompt As String = "Press the escape key (ESC) to quit, " & _
                               "or any other key to continue."
        Dim cki1 As ConsoleKeyInfo
        Dim hashCode As Integer = 0
        
        '
        ' The Console.TreatControlCAsInput property prevents this example from
        ' ending if you press CTL+C, however all other operating system keys and 
        ' shortcuts, such as ALT+TAB or the Windows Logo key, are still in effect. 
        '
        Console.TreatControlCAsInput = True
        
        ' Request that the user enter two key presses. A key press and any 
        ' combination shift, CTRL, and ALT modifier keys is permitted.
        Do
            Console.Write(k1)
            cki1 = Console.ReadKey(False)
            Console.WriteLine()
            '
            key1 = KeyCombination(cki1)
            hashCode = cki1.GetHashCode()
            Console.WriteLine(hashCodeFmt, key1, hashCode)
            '
            Console.WriteLine(prompt)
            cki1 = Console.ReadKey(True)
        Loop While cki1.Key <> ConsoleKey.Escape
    
    End Sub 'Main
     ' Note: This example requires the Escape (Esc) key.
    
    ' The KeyCombination() method creates a string that specifies what 
    ' key and what combination of shift, CTRL, and ALT modifier keys 
    ' were pressed simultaneously.
    Protected Shared Function KeyCombination(ByVal sourceCki As ConsoleKeyInfo) As String 
        Dim sb As New StringBuilder()
        sb.Length = 0
        Dim keyCombo As String
        If sourceCki.Modifiers <> 0 Then
            If(sourceCki.Modifiers And ConsoleModifiers.Alt) <> 0 Then
                sb.Append("ALT+")
            End If
            If(sourceCki.Modifiers And ConsoleModifiers.Shift) <> 0 Then
                sb.Append("SHIFT+")
            End If
            If(sourceCki.Modifiers And ConsoleModifiers.Control) <> 0 Then
                sb.Append("CTL+")
            End If
        End If
        sb.Append(sourceCki.Key.ToString())
        keyCombo = sb.ToString()
        Return keyCombo
    
    End Function 'KeyCombination
End Class 'Sample

'
'This example produces results similar to the following output:
'
'Enter a key ......... a
'The hash code for the A key is 97.
'Press the escape key (ESC) to quit, or any other key to continue.
'
'Enter a key ......... S
'The hash code for the SHIFT+S key is 83.
'Press the escape key (ESC) to quit, or any other key to continue.
'
'Enter a key .........
'The hash code for the ALT+SHIFT+CTL+J key is 7.
'Press the escape key (ESC) to quit, or any other key to continue.
'

Commenti

Il valore restituito per il GetHashCode metodo non è adatto per distinguere un ConsoleKeyInfo da un altro oggetto.The value returned by the GetHashCode method is not suitable for distinguishing one ConsoleKeyInfo object from another. Se l'applicazione richiede un codice hash univoco, eseguire l'override di GetHashCode metodo con un metodo personalizzato.If your application needs a unique hash code, override the GetHashCode method with your own method.

Si applica a