ConsoleKeyInfo.Equals 方法

定义

获取一个值,该值指示某对象或指定的 ConsoleKeyInfo 对象是否等于当前的 ConsoleKeyInfo 对象。

重载

Equals(ConsoleKeyInfo)

获取一个值,该值指示指定的 ConsoleKeyInfo 对象是否等于当前 ConsoleKeyInfo 对象。

Equals(Object)

获取一个值,该值指示指定的对象是否等于当前的 ConsoleKeyInfo 对象。

Equals(ConsoleKeyInfo)

获取一个值,该值指示指定的 ConsoleKeyInfo 对象是否等于当前 ConsoleKeyInfo 对象。

public:
 virtual bool Equals(ConsoleKeyInfo obj);
public:
 bool Equals(ConsoleKeyInfo obj);
public bool Equals (ConsoleKeyInfo obj);
override this.Equals : ConsoleKeyInfo -> bool
Public Function Equals (obj As ConsoleKeyInfo) As Boolean

参数

obj
ConsoleKeyInfo

要与当前 ConsoleKeyInfo 对象进行比较的对象。

返回

Boolean

如果 obj 等于当前 ConsoleKeyInfo 对象,则为 true;否则为 false

实现

注解

如果 ConsoleKeyInfo 两个对象相 KeyChar等,则两个对象相等, Key并且 Modifiers 属性相等。

该方法 Equals 的性能略高于方法, ConsoleKeyInfo.Equals(Object) 因为它不必转换为 obj 对象。

适用于

Equals(Object)

获取一个值,该值指示指定的对象是否等于当前的 ConsoleKeyInfo 对象。

public:
 override bool Equals(System::Object ^ value);
public override bool Equals (object? value);
public override bool Equals (object value);
override this.Equals : obj -> bool
Public Overrides Function Equals (value As Object) As Boolean

参数

value
Object

要与当前 ConsoleKeyInfo 对象进行比较的对象。

返回

Boolean

如果 valueConsoleKeyInfo 对象且等于当前 ConsoleKeyInfo 对象,则为 true;否则为 false

示例

下面的示例演示 Equals 方法。

using namespace System;
using namespace System::Text;

static String^ KeyCombination(ConsoleKeyInfo sourceCki);

void main()
{
   String^ k1 = "\nEnter a key ......... ";
   String^ k2 = "\nEnter another key ... ";
   String^ key1 = "";
   String^ key2 = "";
   String^ areKeysEqual = "The {0} and {1} keys are {2}equal.";
   String^ equalValue = "";
   String^ prompt = "Press the escape key (ESC) to quit, " + 
                    "or any other key to continue.";
   ConsoleKeyInfo cki1;
   ConsoleKeyInfo cki2;
   //
   // 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::Write(k2);
      cki2 = Console::ReadKey(false);
      Console::WriteLine();

      key1 = KeyCombination(cki1);
      key2 = KeyCombination(cki2);
      if (cki1.Equals(cki2))
         equalValue = "";
      else
         equalValue = "not ";
      
      Console::WriteLine(areKeysEqual, key1, key2, equalValue);

      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())
   {
   if ((sourceCki.Modifiers & ConsoleModifiers::Alt) != ConsoleModifiers())
      sb->Append("ALT+");
   if ((sourceCki.Modifiers & ConsoleModifiers::Shift) != ConsoleModifiers())
      sb->Append("SHIFT+");
   if ((sourceCki.Modifiers & ConsoleModifiers::Control) != ConsoleModifiers())
      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
Enter another key ... a
The A and A keys are equal.
Press the escape key (ESC) to quit, or any other key to continue.

Enter a key ......... a
Enter another key ... A
The A and SHIFT+A keys are not equal.
Press the escape key (ESC) to quit, or any other key to continue.

Enter a key ......... S
Enter another key ...
The ALT+SHIFT+S and ALT+CTL+F keys are not equal.
Press the escape key (ESC) to quit, or any other key to continue.

Enter a key .........
Enter another key ...
The UpArrow and UpArrow keys are equal.
Press the escape key (ESC) to quit, or any other key to continue.

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

using System;
using System.Text;

class Sample
{
    public static void Main()
    {
    string k1 = "\nEnter a key ......... ";
    string k2 = "\nEnter another key ... ";
    string key1 = "";
    string key2 = "";
    string areKeysEqual = "The {0} and {1} keys are {2}equal.";
    string equalValue = "";
    string prompt = "Press the escape key (ESC) to quit, " +
                    "or any other key to continue.";
    ConsoleKeyInfo cki1;
    ConsoleKeyInfo cki2;

//
// 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.Write(k2);
        cki2 = Console.ReadKey(false);
        Console.WriteLine();
//
        key1 = KeyCombination(cki1);
        key2 = KeyCombination(cki2);
        if (cki1.Equals(cki2))
            equalValue = "";
        else
            equalValue = "not ";
        Console.WriteLine(areKeysEqual, key1, key2, equalValue);
//
        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
Enter another key ... a
The A and A keys are equal.
Press the escape key (ESC) to quit, or any other key to continue.

Enter a key ......... a
Enter another key ... A
The A and SHIFT+A keys are not equal.
Press the escape key (ESC) to quit, or any other key to continue.

Enter a key ......... S
Enter another key ...
The ALT+SHIFT+S and ALT+CTL+F keys are not equal.
Press the escape key (ESC) to quit, or any other key to continue.

Enter a key .........
Enter another key ...
The UpArrow and UpArrow keys are equal.
Press the escape key (ESC) to quit, or any other key to continue.

*/
// This example demonstrates the ConsoleKeyInfo.Equals() 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>
let mutable cki2 = 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
    printf "\nEnter another key ... "
    cki2 <- Console.ReadKey false
    printfn ""

    let key1 = keyCombination cki1
    let key2 = keyCombination cki2
    let equalValue =
        if cki1.Equals cki2 then ""
        else "not "

    printfn $"The {key1} and {key2} keys are {equalValue}equal."

    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
// Enter another key ... a
// The A and A keys are equal.
// Press the escape key (ESC) to quit, or any other key to continue.
//
// Enter a key ......... a
// Enter another key ... A
// The A and SHIFT+A keys are not equal.
// Press the escape key (ESC) to quit, or any other key to continue.
//
// Enter a key ......... S
// Enter another key ...
// The ALT+SHIFT+S and ALT+CTL+F keys are not equal.
// Press the escape key (ESC) to quit, or any other key to continue.
//
// Enter a key .........
// Enter another key ...
// The UpArrow and UpArrow keys are equal.
// Press the escape key (ESC) to quit, or any other key to continue.
' This example demonstrates the ConsoleKeyInfo.Equals() method.
Imports System.Text

Class Sample
    Public Shared Sub Main() 
        Dim k1 As String = vbCrLf & "Enter a key ......... "
        Dim k2 As String = vbCrLf & "Enter another key ... "
        Dim key1 As String = ""
        Dim key2 As String = ""
        Dim areKeysEqual As String = "The {0} and {1} keys are {2}equal."
        Dim equalValue As String = ""
        Dim prompt As String = "Press the escape key (ESC) to quit, " & _
                               "or any other key to continue."
        Dim cki1 As ConsoleKeyInfo
        Dim cki2 As ConsoleKeyInfo
        
        '
        ' 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.Write(k2)
            cki2 = Console.ReadKey(False)
            Console.WriteLine()
            '
            key1 = KeyCombination(cki1)
            key2 = KeyCombination(cki2)
            If cki1.Equals(cki2) Then
                equalValue = ""
            Else
                equalValue = "not "
            End If
            Console.WriteLine(areKeysEqual, key1, key2, equalValue)
            '
            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
'Enter another key ... a
'The A and A keys are equal.
'Press the escape key (ESC) to quit, or any other key to continue.
'
'Enter a key ......... a
'Enter another key ... A
'The A and SHIFT+A keys are not equal.
'Press the escape key (ESC) to quit, or any other key to continue.
'
'Enter a key ......... S
'Enter another key ...
'The ALT+SHIFT+S and ALT+CTL+F keys are not equal.
'Press the escape key (ESC) to quit, or any other key to continue.
'
'Enter a key .........
'Enter another key ...
'The UpArrow and UpArrow keys are equal.
'Press the escape key (ESC) to quit, or any other key to continue.
'

注解

如果 ConsoleKeyInfo 两个对象相 KeyChar等,则两个对象相等, Key并且 Modifiers 属性相等。

适用于