ConsoleKeyInfo.GetHashCode Method     
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
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
	Returns
A 32-bit signed integer hash code.
Examples
The following example demonstrates the GetHashCode method.
// 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.
open System
open System.Text
// The keyCombination function creates a string that specifies what
// key and what combination of shift, CTRL, and ALT modifier keys
// were pressed simultaneously.
let keyCombination (sourceCki: ConsoleKeyInfo) =
    let sb = StringBuilder()
    sb.Length <- 0
    if int sourceCki.Modifiers <> 0 then
        if int (sourceCki.Modifiers &&& ConsoleModifiers.Alt) <> 0 then
            sb.Append "ALT+" |> ignore
        if int (sourceCki.Modifiers &&& ConsoleModifiers.Shift) <> 0 then
            sb.Append "SHIFT+" |> ignore
        if int (sourceCki.Modifiers &&& ConsoleModifiers.Control) <> 0 then
            sb.Append "CTL+" |> ignore
    sourceCki.Key
    |> string
    |> sb.Append
    |> string
//
// 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
let mutable cki1 = Unchecked.defaultof<ConsoleKeyInfo>
// Request that the user enter two key presses. A key press and any
// combination shift, CTRL, and ALT modifier keys is permitted.
while cki1.Key <> ConsoleKey.Escape do
    printf "\nEnter a key ......... " 
    cki1 <- Console.ReadKey false
    printfn ""
    let key1 = keyCombination cki1
    let hashCode = cki1.GetHashCode()
    printfn $"The hash code for the {key1} key is {hashCode}."
    printfn "Press the escape key (ESC) to quit, or any other key to continue."
    cki1 <- Console.ReadKey true
// Note: This example requires the Escape (Esc) key.
//
// 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.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
     ' 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
'
'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.
'
	Remarks
The value returned by the GetHashCode method is not suitable for distinguishing one ConsoleKeyInfo object from another. If your application needs a unique hash code, override the GetHashCode method with your own method.