Int32.Equals Methode

Definition

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Int32-Wert ist.

Überlädt

Equals(Int32)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Int32-Wert ist.

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.

Equals(Int32)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Int32-Wert ist.

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

Parameter

obj
Int32

Ein mit dieser Instanz zu vergleichender Int32-Wert.

Gibt zurück

Boolean

true, wenn obj über denselben Wert wie diese Instanz verfügt, andernfalls false.

Implementiert

Hinweise

Diese Methode implementiert die System.IEquatable<T> -Schnittstelle und führt eine etwas bessere Leistung aus, als Int32.Equals(Object) weil sie den -Parameter nicht in ein -Objekt konvertieren obj muss.

Hinweise für Aufrufer

Die Auflösung von Compilerüberladungen kann einen offensichtlichen Unterschied im Verhalten der beiden Equals(Int32) Methodenüberladungen berücksichtigen. Wenn eine implizite Konvertierung zwischen dem obj Argument und einem definiert ist und das Argument nicht als Int32 typisiert Object ist, führen Compiler eine implizite Konvertierung aus und rufen die Equals(Int32) -Methode auf. Andernfalls rufen sie die Equals(Object) -Methode auf, die immer false zurückgibt, wenn ihr Argument kein Wert obj Int32 ist. Das folgende Beispiel veranschaulicht den Unterschied im Verhalten zwischen den beiden Methodenüberladungen. Im Fall der Byte Werte , , und gibt der erste Vergleich Int16 SByte UInt16 zurück, da der Compiler automatisch eine true erweiternde Konvertierung ausführt und die Equals(Int32) -Methode aufruft, während der zweite Vergleich zurückgibt, false da der Compiler die -Methode aufruft. Equals(Object)

using System;

public class Example
{
   static int value = 112;

   public static void Main()
   {
      byte byte1= 112;
      Console.WriteLine("value = byte1: {0,15}", value.Equals(byte1));
      TestObjectForEquality(byte1);

      short short1 = 112;
      Console.WriteLine("value = short1: {0,15}", value.Equals(short1));
      TestObjectForEquality(short1);

      long long1 = 112;
      Console.WriteLine("value = long1: {0,17}", value.Equals(long1));
      TestObjectForEquality(long1);

      sbyte sbyte1 = 112;
      Console.WriteLine("value = sbyte1: {0,15}", value.Equals(sbyte1));
      TestObjectForEquality(sbyte1);

      ushort ushort1 = 112;
      Console.WriteLine("value = ushort1: {0,15}", value.Equals(ushort1));
      TestObjectForEquality(ushort1);

      ulong ulong1 = 112;
      Console.WriteLine("value = ulong1: {0,17}", value.Equals(ulong1));
      TestObjectForEquality(ulong1);

      decimal dec1 = 112m;
      Console.WriteLine("value = dec1: {0,20}", value.Equals(dec1));
      TestObjectForEquality(dec1);

      double dbl1 = 112;
      Console.WriteLine("value = dbl1: {0,19}", value.Equals(dbl1));
      TestObjectForEquality(dbl1);
   }

   private static void TestObjectForEquality(Object obj)
   {
      Console.WriteLine("{0} ({1}) = {2} ({3}): {4}\n",
                        value, value.GetType().Name,
                        obj, obj.GetType().Name,
                        value.Equals(obj));
   }
}
// The example displays the following output:
//       value = byte1:            True
//       112 (Int32) = 112 (Byte): False
//
//       value = short1:            True
//       112 (Int32) = 112 (Int16): False
//
//       value = long1:             False
//       112 (Int32) = 112 (Int64): False
//
//       value = sbyte1:            True
//       112 (Int32) = 112 (SByte): False
//
//       value = ushort1:            True
//       112 (Int32) = 112 (UInt16): False
//
//       value = ulong1:             False
//       112 (Int32) = 112 (UInt64): False
//
//       value = dec1:                False
//       112 (Int32) = 112 (Decimal): False
//
//       value = dbl1:               False
//       112 (Int32) = 112 (Double): False

Gilt für

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.

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

Parameter

obj
Object

Ein Objekt, das mit dieser Instanz verglichen werden soll.

Gibt zurück

Boolean

true, wenn obj eine Instanz von Int32 ist, deren Wert gleich dem Wert dieser Instanz ist, andernfalls false.

Beispiele

Im folgenden Beispiel wird die Verwendung von Equals im Kontext von Int32 veranschaulicht, wobei zwei Werte verglichen und int zurückgegeben true werden, wenn sie die gleiche Zahl darstellen, oder false , wenn sie dies nicht tun.

Int32 myVariable1 = 60;
Int32 myVariable2 = 60;

// Get and display the declaring type.
Console::WriteLine( "\nType of 'myVariable1' is '{0}' and  value is : {1}", myVariable1.GetType(), myVariable1 );
Console::WriteLine( "Type of 'myVariable2' is '{0}' and  value is : {1}", myVariable2.GetType(), myVariable2 );

// Compare 'myVariable1' instance with 'myVariable2' Object.
if ( myVariable1.Equals( myVariable2 ) )
      Console::WriteLine( "\nStructures 'myVariable1' and 'myVariable2' are equal" );
else
      Console::WriteLine( "\nStructures 'myVariable1' and 'myVariable2' are not equal" );
Int32 myVariable1 = 60;
Int32 myVariable2 = 60;

// Get and display the declaring type.
Console.WriteLine("\nType of 'myVariable1' is '{0}' and"+
     " value is :{1}",myVariable1.GetType(), myVariable1);
Console.WriteLine("Type of 'myVariable2' is '{0}' and"+
     " value is :{1}",myVariable2.GetType(), myVariable2);

// Compare 'myVariable1' instance with 'myVariable2' Object.
if( myVariable1.Equals( myVariable2 ) )
   Console.WriteLine( "\nStructures 'myVariable1' and "+
         "'myVariable2' are equal");
else
   Console.WriteLine( "\nStructures 'myVariable1' and "+
         "'myVariable2' are not equal");
let myVariable1 = 60
let myVariable2 = 60

// Get and display the declaring type.
printfn $"\nType of 'myVariable1' is '{myVariable1.GetType()}' and value is: {myVariable1}"
printfn $"Type of 'myVariable2' is '{myVariable2.GetType()}' and value is: {myVariable2}"

// Compare 'myVariable1' instance with 'myVariable2' Object.
if myVariable1.Equals myVariable2 then
    printfn "\nStructures 'myVariable1' and 'myVariable2' are equal"
else
    printfn "\nStructures 'myVariable1' and 'myVariable2' are not equal"
Dim myVariable1 As Int32 = 60
Dim myVariable2 As Int32 = 60

' Get and display the declaring type.
Console.WriteLine(ControlChars.NewLine + "Type of 'myVariable1' is '{0}' and" +  _
         " value is :{1}", myVariable1.GetType().ToString(), myVariable1.ToString())
Console.WriteLine("Type of 'myVariable2' is '{0}' and" +  _
         " value is :{1}", myVariable2.GetType().ToString(), myVariable2.ToString())

' Compare 'myVariable1' instance with 'myVariable2' Object.
If myVariable1.Equals(myVariable2) Then
   Console.WriteLine(ControlChars.NewLine + "Structures 'myVariable1' and " +  _
            "'myVariable2' are equal")
Else
   Console.WriteLine(ControlChars.NewLine + "Structures 'myVariable1' and " + _
         "'myVariable2' are not equal")
End If

Hinweise für Aufrufer

Die Auflösung von Compilerüberladungen kann einen offensichtlichen Unterschied im Verhalten der beiden Equals(Int32) Methodenüberladungen berücksichtigen. Wenn eine implizite Konvertierung zwischen dem obj Argument und einem definiert ist und das Argument nicht als Int32 typisiert Object ist, führen Compiler eine implizite Konvertierung aus und rufen die Equals(Int32) -Methode auf. Andernfalls rufen sie die Equals(Object) -Methode auf, die immer false zurückgibt, wenn ihr Argument kein Wert obj Int32 ist. Das folgende Beispiel veranschaulicht den Unterschied im Verhalten zwischen den beiden Methodenüberladungen. Im Fall der Byte Werte , , und gibt der erste Vergleich Int16 SByte UInt16 zurück, da der Compiler automatisch eine true erweiternde Konvertierung ausführt und die Equals(Int32) -Methode aufruft, während der zweite Vergleich zurückgibt, false da der Compiler die -Methode aufruft. Equals(Object)

using System;

public class Example
{
   static int value = 112;

   public static void Main()
   {
      byte byte1= 112;
      Console.WriteLine("value = byte1: {0,15}", value.Equals(byte1));
      TestObjectForEquality(byte1);

      short short1 = 112;
      Console.WriteLine("value = short1: {0,15}", value.Equals(short1));
      TestObjectForEquality(short1);

      long long1 = 112;
      Console.WriteLine("value = long1: {0,17}", value.Equals(long1));
      TestObjectForEquality(long1);

      sbyte sbyte1 = 112;
      Console.WriteLine("value = sbyte1: {0,15}", value.Equals(sbyte1));
      TestObjectForEquality(sbyte1);

      ushort ushort1 = 112;
      Console.WriteLine("value = ushort1: {0,15}", value.Equals(ushort1));
      TestObjectForEquality(ushort1);

      ulong ulong1 = 112;
      Console.WriteLine("value = ulong1: {0,17}", value.Equals(ulong1));
      TestObjectForEquality(ulong1);

      decimal dec1 = 112m;
      Console.WriteLine("value = dec1: {0,20}", value.Equals(dec1));
      TestObjectForEquality(dec1);

      double dbl1 = 112;
      Console.WriteLine("value = dbl1: {0,19}", value.Equals(dbl1));
      TestObjectForEquality(dbl1);
   }

   private static void TestObjectForEquality(Object obj)
   {
      Console.WriteLine("{0} ({1}) = {2} ({3}): {4}\n",
                        value, value.GetType().Name,
                        obj, obj.GetType().Name,
                        value.Equals(obj));
   }
}
// The example displays the following output:
//       value = byte1:            True
//       112 (Int32) = 112 (Byte): False
//
//       value = short1:            True
//       112 (Int32) = 112 (Int16): False
//
//       value = long1:             False
//       112 (Int32) = 112 (Int64): False
//
//       value = sbyte1:            True
//       112 (Int32) = 112 (SByte): False
//
//       value = ushort1:            True
//       112 (Int32) = 112 (UInt16): False
//
//       value = ulong1:             False
//       112 (Int32) = 112 (UInt64): False
//
//       value = dec1:                False
//       112 (Int32) = 112 (Decimal): False
//
//       value = dbl1:               False
//       112 (Int32) = 112 (Double): False

Siehe auch

Gilt für