UInt64.Equals Método

Definición

Devuelve un valor que indica si esta instancia equivale a un objeto especificado o a un valor UInt64.

Sobrecargas

Equals(Object)

Devuelve un valor que indica si esta instancia equivale a un objeto especificado.

Equals(UInt64)

Devuelve un valor que indica si esta instancia equivale a un valor de UInt64 especificado.

Equals(Object)

Devuelve un valor que indica si esta instancia equivale a un objeto especificado.

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

Parámetros

obj
Object

Un objeto que se va a comparar con esta instancia.

Devoluciones

Boolean

true si obj es una instancia de UInt64 y es igual al valor de esta instancia; en caso contrario, false.

Ejemplos

En el siguiente ejemplo se muestra el Equals método.

using System;

public class Example
{
   public static void Main()
   {
      object[] values = { (short) 10, (short) 20, 10, 20,
                          10L, 20L, 10D, 20D, (ushort) 10,
                          (ushort) 20, 10U, 20U,
                          10ul, 20ul };
      UInt64 baseValue = 20;
      String baseType = baseValue.GetType().Name;
      
      foreach (var value in values)
         Console.WriteLine("{0} ({1}) = {2} ({3}): {4}",
                           baseValue, baseType,
                           value, value.GetType().Name,
                           baseValue.Equals(value));
   }
}
// The example displays the following output:
//       20 (UInt64) = 10 (Int16): False
//       20 (UInt64) = 20 (Int16): False
//       20 (UInt64) = 10 (Int32): False
//       20 (UInt64) = 20 (Int32): False
//       20 (UInt64) = 10 (Int64): False
//       20 (UInt64) = 20 (Int64): False
//       20 (UInt64) = 10 (Double): False
//       20 (UInt64) = 20 (Double): False
//       20 (UInt64) = 10 (UInt16): False
//       20 (UInt64) = 20 (UInt16): False
//       20 (UInt64) = 10 (UInt32): False
//       20 (UInt64) = 20 (UInt32): False
//       20 (UInt64) = 10 (UInt64): False
//       20 (UInt64) = 20 (UInt64): True
Module Example
   Public Sub Main()
      Dim values() As Object = { 10S, 20S, 10I, 20I, 10L, 20L,
                                 10R, 20R, 10US, 20US, 10UI, 20UI,
                                 10UL, 20UL }
      Dim baseValue As UInt64 = 20
      Dim baseType As String = baseValue.GetType().Name
      
      For Each value In values
         Console.WriteLine("{0} ({1}) = {2} ({3}): {4}",
                           baseValue, baseType,
                           value, value.GetType().Name,
                           baseValue.Equals(value))
      Next
   End Sub
End Module
' The example displays the following output:
'       20 (UInt64) = 10 (Int16): False
'       20 (UInt64) = 20 (Int16): False
'       20 (UInt64) = 10 (Int32): False
'       20 (UInt64) = 20 (Int32): False
'       20 (UInt64) = 10 (Int64): False
'       20 (UInt64) = 20 (Int64): False
'       20 (UInt64) = 10 (Double): False
'       20 (UInt64) = 20 (Double): False
'       20 (UInt64) = 10 (UInt16): False
'       20 (UInt64) = 20 (UInt16): False
'       20 (UInt64) = 10 (UInt32): False
'       20 (UInt64) = 20 (UInt32): False
'       20 (UInt64) = 10 (UInt64): False
'       20 (UInt64) = 20 (UInt64): True

Notas a los autores de las llamadas

La resolución de sobrecargas del compilador puede tener en cuenta una diferencia evidente en el comportamiento de las dos Equals(UInt64) sobrecargas de método. Si se define una conversión implícita entre el argumento y un y el argumento no se escribe como , los compiladores realizan una conversión implícita y obj UInt64 llaman al método Object Equals(UInt64) . De lo contrario, llaman Equals(Object) al método , que siempre devuelve si su argumento no es un false obj UInt64 valor. En el ejemplo siguiente se muestra la diferencia de comportamiento entre las dos sobrecargas de método. En el caso de los valores , y , la primera comparación devuelve porque el compilador realiza automáticamente una conversión de ampliación y llama al método , mientras que la segunda comparación devuelve porque el compilador llama al método Byte UInt16 UInt32 true Equals(UInt64) false Equals(Object) .

using System;

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

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

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

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

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

      uint uint1 = 112;
      Console.WriteLine("value = uint1: {0,18}", value.Equals(uint1));
      TestObjectForEquality(uint1);

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

      double dbl1 = 112;
      Console.WriteLine("value = dbl1: {0,20}", 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 (UInt64) = 112 (Byte): False
//
//       value = short1:             False
//       112 (UInt64) = 112 (Int16): False
//
//       value = int1:               False
//       112 (UInt64) = 112 (Int32): False
//
//       value = sbyte1:             False
//       112 (UInt64) = 112 (SByte): False
//
//       value = ushort1:             True
//       112 (UInt64) = 112 (UInt16): False
//
//       value = uint1:               True
//       112 (UInt64) = 112 (UInt32): False
//
//       value = dec1:                 False
//       112 (UInt64) = 112 (Decimal): False
//
//       value = dbl1:                False
//       112 (UInt64) = 112 (Double): False

Consulte también

Se aplica a

Equals(UInt64)

Devuelve un valor que indica si esta instancia equivale a un valor de UInt64 especificado.

public:
 virtual bool Equals(System::UInt64 obj);
public bool Equals (ulong obj);
override this.Equals : uint64 -> bool
Public Function Equals (obj As ULong) As Boolean

Parámetros

obj
UInt64

Valor UInt64 que se va a comparar con esta instancia.

Devoluciones

Boolean

true si el valor de obj tiene el mismo valor que esta instancia; en caso contrario, false.

Implementaciones

Ejemplos

En el siguiente ejemplo se muestra el Equals método.

using namespace System;

int main()
{
      UInt64 value1 = 50;
      UInt64 value2 = 50;

      // Display the values.
        Console::WriteLine("value1:   Type: {0}   Value: {1}",
                           value1.GetType()->Name, value1);
        Console::WriteLine("value2:   Type: {0}   Value: {1}",
                         value2.GetType()->Name, value2);

        // Compare the two values.
        Console::WriteLine("value1 and value2 are equal: {0}",
                           value1.Equals(value2));
}
// The example displays the following output:
//       value1:   Type: UInt64   Value: 50
//       value2:   Type: UInt64   Value: 50
//       value1 and value2 are equal: True
using System;

class Example
{
     public static void Main()
     {
         UInt64 value1 = 50;
         UInt64 value2 = 50;

         // Display the values.
        Console.WriteLine("value1:   Type: {0}   Value: {1}",
                          value1.GetType().Name, value1);
        Console.WriteLine("value2:   Type: {0}   Value: {1}",
                        value2.GetType().Name, value2);

        // Compare the two values.
        Console.WriteLine("value1 and value2 are equal: {0}",
                          value1.Equals(value2));
     }
}
// The example displays the following output:
//       value1:   Type: UInt64   Value: 50
//       value2:   Type: UInt64   Value: 50
//       value1 and value2 are equal: True
Class Example
   Public Shared Sub Main()
      Dim value1 As UInt64 = 50
      Dim value2 As UInt64 = 50
      
      'Display the values.
      Console.WriteLine("value1:   Type: {0}   Value: {1}",
                        value1.GetType().Name, value1)
      Console.WriteLine("value2:   Type: {0}   Value: {1}",
                        value2.GetType().Name, value2)

      ' Compare the two values.
      Console.WriteLine("value1 and value2 are equal: {0}",
                        value1.Equals(value2))
   End Sub
End Class 
' The example displays the following output:
'       value1:   Type: UInt64   Value: 50
'       value2:   Type: UInt64   Value: 50
'       value1 and value2 are equal: True

Comentarios

Este método implementa la interfaz y funciona ligeramente mejor que porque no tiene que convertir el System.IEquatable<T> parámetro en un objeto Equals obj .

Notas a los autores de las llamadas

La resolución de sobrecargas del compilador puede tener en cuenta una diferencia evidente en el comportamiento de las dos Equals(UInt64) sobrecargas de método. Si se define una conversión implícita entre el argumento y un y el argumento no se escribe como , los compiladores realizan una conversión implícita y obj UInt64 llaman al método Object Equals(UInt64) . De lo contrario, llaman Equals(Object) al método , que siempre devuelve si su argumento no es un false obj UInt64 valor. En el ejemplo siguiente se muestra la diferencia de comportamiento entre las dos sobrecargas de método. En el caso de los valores , y , la primera comparación devuelve porque el compilador realiza automáticamente una conversión de ampliación y llama al método , mientras que la segunda comparación devuelve porque el compilador llama al método Byte UInt16 UInt32 true Equals(UInt64) false Equals(Object) .

using System;

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

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

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

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

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

      uint uint1 = 112;
      Console.WriteLine("value = uint1: {0,18}", value.Equals(uint1));
      TestObjectForEquality(uint1);

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

      double dbl1 = 112;
      Console.WriteLine("value = dbl1: {0,20}", 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 (UInt64) = 112 (Byte): False
//
//       value = short1:             False
//       112 (UInt64) = 112 (Int16): False
//
//       value = int1:               False
//       112 (UInt64) = 112 (Int32): False
//
//       value = sbyte1:             False
//       112 (UInt64) = 112 (SByte): False
//
//       value = ushort1:             True
//       112 (UInt64) = 112 (UInt16): False
//
//       value = uint1:               True
//       112 (UInt64) = 112 (UInt32): False
//
//       value = dec1:                 False
//       112 (UInt64) = 112 (Decimal): False
//
//       value = dbl1:                False
//       112 (UInt64) = 112 (Double): False

Se aplica a