ConsoleKeyInfo.GetHashCode Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí kód hash aktuálního objektu ConsoleKeyInfo .
public:
override int GetHashCode();
public override int GetHashCode ();
override this.GetHashCode : unit -> int
Public Overrides Function GetHashCode () As Integer
Návraty
Kód hash v podobě 32bitového čísla se znaménkem.
Příklady
Následující příklad ukazuje metodu GetHashCode .
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.
'
Poznámky
Hodnota vrácená metodou není vhodná pro rozlišení jednoho ConsoleKeyInfo objektu GetHashCode od druhého. Pokud vaše aplikace potřebuje jedinečný kód hash, přepište metodu GetHashCode vlastní metodou.