ConsoleKeyInfo.GetHashCode Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve el código hash del objeto ConsoleKeyInfo actual.
public:
override int GetHashCode();
public override int GetHashCode ();
override this.GetHashCode : unit -> int
Public Overrides Function GetHashCode () As Integer
Devoluciones
Código hash de un entero con signo de 32 bits.
Ejemplos
En el siguiente ejemplo se muestra el GetHashCode método.
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.
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.
'
Comentarios
El valor devuelto por el GetHashCode método no es adecuado para distinguir un ConsoleKeyInfo objeto de otro. Si la aplicación necesita un código hash único, invalide el GetHashCode método con su propio método.