ConsoleKeyInfo.GetHashCode 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回目前 ConsoleKeyInfo 物件的雜湊碼。
public:
override int GetHashCode();
public override int GetHashCode ();
override this.GetHashCode : unit -> int
Public Overrides Function GetHashCode () As Integer
傳回
32 位元帶正負號的整數雜湊碼。
範例
下列範例示範 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.
'
備註
方法傳 GetHashCode 回的值不適合區分某個物件與另一個 ConsoleKeyInfo 物件。 如果您的應用程式需要唯一的雜湊程式碼,請使用 GetHashCode 您自己的方法覆寫 方法。