Int32.Equals Methode

Definitie

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven Int32 waarde.

Overloads

Name Description
Equals(Int32)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven Int32 waarde.

Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

Equals(Int32)

Bron:
Int32.cs
Bron:
Int32.cs
Bron:
Int32.cs
Bron:
Int32.cs
Bron:
Int32.cs

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven Int32 waarde.

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

Parameters

obj
Int32

Een Int32 waarde die moet worden vergeleken met dit exemplaar.

Retouren

trueals obj deze instantie dezelfde waarde heeft; anders. false

Implementeringen

Opmerkingen

Deze methode implementeert de System.IEquatable<T> interface en presteert iets beter dan Int32.Equals(Object) omdat deze de obj parameter niet hoeft te converteren naar een object.

Notities voor bellers

De oplossing voor overbelasting van compilers kan een duidelijk verschil in het gedrag van de twee Equals(Int32) methodeoverbelastingen zijn. Als een impliciete conversie tussen het obj argument en een Int32 is gedefinieerd en het argument niet als een Objectis getypt, voeren compilers een impliciete conversie uit en roepen ze de methode aan Equals(Int32) . Anders wordt de Equals(Object) methode aangeroepen, die altijd retourneert false als het obj argument geen Int32 waarde is. In het volgende voorbeeld ziet u het verschil in gedrag tussen de twee overbelastingen van de methode. In het geval van de Byte, Int16, en SByteUInt16 waarden retourneert true de eerste vergelijking omdat de compiler automatisch een verbreidingsconversie uitvoert en de Equals(Int32) methode aanroept, terwijl de tweede vergelijking retourneert omdat de compiler de false methode aanroeptEquals(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

let value = 112

let testObjectForEquality (obj: obj) =
    printfn $"{value} ({value.GetType().Name}) = {obj} ({obj.GetType().Name}): {value.Equals obj}\n"

let byte1 = 112uy
printfn $"value = byte1: {value.Equals(int byte1),15}"
testObjectForEquality byte1

let short1 = 112s
printfn $"value = short1: {value.Equals(int short1),15}"
testObjectForEquality short1

let long1 = 112L
printfn $"value = long1: {value.Equals(int long1),17}"
testObjectForEquality long1

let sbyte1 = 112y
printfn $"value = sbyte1: {value.Equals(int sbyte1),15}"
testObjectForEquality sbyte1

let ushort1 = 112us
printfn $"value = ushort1: {value.Equals(int ushort1),15}"
testObjectForEquality ushort1

let ulong1 = 112uL
printfn $"value = ulong1: {value.Equals(int ulong1),17}"
testObjectForEquality ulong1

let dec1 = 112M
printfn $"value = dec1: {value.Equals(int dec1),20}"
testObjectForEquality dec1

let dbl1 = 112.0
printfn $"value = dbl1: {value.Equals(int dbl1),19}"
testObjectForEquality dbl1


// 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
Module Example
   Dim value As Int32 = 112
   
   Public Sub Main()
      Dim byte1 As Byte = 112
      Console.WriteLine("value = byte1: {0,15}", value.Equals(byte1))
      TestObjectForEquality(byte1)
      
      Dim short1 As Short = 112
      Console.WriteLine("value = short1: {0,15}", value.Equals(short1))
      TestObjectForEquality(short1)

      Dim long1 As Long = 112
      Console.WriteLine("value = long1: {0,17}", value.Equals(long1))
      TestObjectForEquality(long1)

      Dim sbyte1 As SByte = 112
      Console.WriteLine("value = sbyte1: {0,15}", value.Equals(sbyte1))
      TestObjectForEquality(sbyte1)
      
      Dim ushort1 As UShort = 112
      Console.WriteLine("value = ushort1: {0,15}", value.Equals(ushort1))
      TestObjectForEquality(ushort1)

      Dim ulong1 As ULong = 112
      Console.WriteLine("value = ulong1: {0,17}", value.Equals(ulong1))
      TestObjectForEquality(ulong1)

      Dim dec1 As Decimal = 112d
      Console.WriteLine("value = dec1: {0,20}", value.Equals(dec1))
      TestObjectForEquality(dec1)

      Dim dbl1 As Double = 112
      Console.WriteLine("value = dbl1: {0,19}", value.Equals(dbl1))
      TestObjectForEquality(dbl1)
   End Sub
   
   Private Sub TestObjectForEquality(obj As Object)
      Console.WriteLine("{0} ({1}) = {2} ({3}): {4}",
                        value, value.GetType().Name,
                        obj, obj.GetType().Name,
                        value.Equals(obj))
      Console.WriteLine()
   End Sub
End Module
' 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

Van toepassing op

Equals(Object)

Bron:
Int32.cs
Bron:
Int32.cs
Bron:
Int32.cs
Bron:
Int32.cs
Bron:
Int32.cs

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

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

Parameters

obj
Object

Een object dat moet worden vergeleken met dit exemplaar.

Retouren

trueals obj dit een instantie is van Int32 en gelijk is aan de waarde van dit exemplaar; anders. false

Voorbeelden

Het volgende voorbeeld illustreert het gebruik van Equals in de context van, het vergelijken van Int32twee int waarden en het retourneren true als ze hetzelfde getal vertegenwoordigen, of false als ze dat niet doen.

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

Notities voor bellers

De oplossing voor overbelasting van compilers kan een duidelijk verschil in het gedrag van de twee Equals(Int32) methodeoverbelastingen zijn. Als een impliciete conversie tussen het obj argument en een Int32 is gedefinieerd en het argument niet als een Objectis getypt, voeren compilers een impliciete conversie uit en roepen ze de methode aan Equals(Int32) . Anders wordt de Equals(Object) methode aangeroepen, die altijd retourneert false als het obj argument geen Int32 waarde is. In het volgende voorbeeld ziet u het verschil in gedrag tussen de twee overbelastingen van de methode. In het geval van de Byte, Int16, en SByteUInt16 waarden retourneert true de eerste vergelijking omdat de compiler automatisch een verbreidingsconversie uitvoert en de Equals(Int32) methode aanroept, terwijl de tweede vergelijking retourneert omdat de compiler de false methode aanroeptEquals(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

let value = 112

let testObjectForEquality (obj: obj) =
    printfn $"{value} ({value.GetType().Name}) = {obj} ({obj.GetType().Name}): {value.Equals obj}\n"

let byte1 = 112uy
printfn $"value = byte1: {value.Equals(int byte1),15}"
testObjectForEquality byte1

let short1 = 112s
printfn $"value = short1: {value.Equals(int short1),15}"
testObjectForEquality short1

let long1 = 112L
printfn $"value = long1: {value.Equals(int long1),17}"
testObjectForEquality long1

let sbyte1 = 112y
printfn $"value = sbyte1: {value.Equals(int sbyte1),15}"
testObjectForEquality sbyte1

let ushort1 = 112us
printfn $"value = ushort1: {value.Equals(int ushort1),15}"
testObjectForEquality ushort1

let ulong1 = 112uL
printfn $"value = ulong1: {value.Equals(int ulong1),17}"
testObjectForEquality ulong1

let dec1 = 112M
printfn $"value = dec1: {value.Equals(int dec1),20}"
testObjectForEquality dec1

let dbl1 = 112.0
printfn $"value = dbl1: {value.Equals(int dbl1),19}"
testObjectForEquality dbl1


// 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
Module Example
   Dim value As Int32 = 112
   
   Public Sub Main()
      Dim byte1 As Byte = 112
      Console.WriteLine("value = byte1: {0,15}", value.Equals(byte1))
      TestObjectForEquality(byte1)
      
      Dim short1 As Short = 112
      Console.WriteLine("value = short1: {0,15}", value.Equals(short1))
      TestObjectForEquality(short1)

      Dim long1 As Long = 112
      Console.WriteLine("value = long1: {0,17}", value.Equals(long1))
      TestObjectForEquality(long1)

      Dim sbyte1 As SByte = 112
      Console.WriteLine("value = sbyte1: {0,15}", value.Equals(sbyte1))
      TestObjectForEquality(sbyte1)
      
      Dim ushort1 As UShort = 112
      Console.WriteLine("value = ushort1: {0,15}", value.Equals(ushort1))
      TestObjectForEquality(ushort1)

      Dim ulong1 As ULong = 112
      Console.WriteLine("value = ulong1: {0,17}", value.Equals(ulong1))
      TestObjectForEquality(ulong1)

      Dim dec1 As Decimal = 112d
      Console.WriteLine("value = dec1: {0,20}", value.Equals(dec1))
      TestObjectForEquality(dec1)

      Dim dbl1 As Double = 112
      Console.WriteLine("value = dbl1: {0,19}", value.Equals(dbl1))
      TestObjectForEquality(dbl1)
   End Sub
   
   Private Sub TestObjectForEquality(obj As Object)
      Console.WriteLine("{0} ({1}) = {2} ({3}): {4}",
                        value, value.GetType().Name,
                        obj, obj.GetType().Name,
                        value.Equals(obj))
      Console.WriteLine()
   End Sub
End Module
' 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

Zie ook

Van toepassing op