Číst v angličtině

Sdílet prostřednictvím


Int16.Equals Metoda

Definice

Vrátí hodnotu určující, zda je tato instance rovna zadanému objektu nebo Int16 .

Přetížení

Equals(Int16)

Vrátí hodnotu určující, zda je tato instance rovna zadané Int16 hodnotě.

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

Equals(Int16)

Vrátí hodnotu určující, zda je tato instance rovna zadané Int16 hodnotě.

public bool Equals (short obj);

Parametry

obj
Int16

Hodnota, Int16 která se má porovnat s touto instancí.

Návraty

Boolean

true pokud obj má stejnou hodnotu jako tato instance, jinak hodnota false .

Implementuje

Poznámky

Tato metoda implementuje rozhraní a má trochu lepší výkon než , protože nemusí převést System.IEquatable<T> Equals parametr na obj objekt.

Poznámky pro volající

Rozlišení přetížení kompilátoru může zohlednit zjevný rozdíl v chování dvou Equals(Int16) přetížení metody. Pokud je definován implicitní převod mezi argumentem a argumentem a argument není typován jako , kompilátory provádějí implicitní převod obj Int16 a Object volají Equals(Int16) metodu . V opačném případě volají Equals(Object) metodu , která vždy vrátí false obj hodnotu, pokud její argument není Int16 hodnota. Následující příklad ukazuje rozdíl v chování mezi těmito dvěma přetíženími metody. V případě hodnot a se první porovnání vrátí, protože kompilátor automaticky provádí rozšiřující převod a volá metodu , zatímco druhé porovnání vrátí , protože kompilátor volá Byte SByte true Equals(Int16) false Equals(Object) metodu .

using System;

public class Example
{
   static short value = 112;

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

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

      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);

      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 (Int16) = 112 (Byte): False
//
//       value = int1:             False
//       112 (Int16) = 112 (Int32): False
//
//       value = sbyte1:            True
//       112 (Int16) = 112 (SByte): False
//
//       value = ushort1:            False
//       112 (Int16) = 112 (UInt16): False
//
//       value = dec1:                False
//       112 (Int16) = 112 (Decimal): False
//
//       value = dbl1:               False
//       112 (Int16) = 112 (Double): False

Viz také

Platí pro

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

public override bool Equals (object obj);
public override bool Equals (object? obj);

Parametry

obj
Object

Objekt k porovnání s touto instancí.

Návraty

Boolean

true pokud obj je instance a rovná se hodnotě této Int16 instance; jinak hodnota false .

Příklady

Následující příklad kódu ukazuje použití v kontextu , porovnání dvou krátkých hodnot a vrácení, pokud představují stejné číslo, nebo pokud Equals Int16 true false ne.

Int16 myVariable1 = 20;
Int16 myVariable2 = 20;

// 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");

Poznámky pro volající

Rozlišení přetížení kompilátoru může zohlednit zjevný rozdíl v chování dvou Equals(Int16) přetížení metody. Pokud je definován implicitní převod mezi argumentem a argumentem a argument není typován jako , kompilátory provádějí implicitní převod obj Int16 a Object volají Equals(Int16) metodu . V opačném případě volají Equals(Object) metodu , která vždy vrátí false obj hodnotu, pokud její argument není Int16 hodnota. Následující příklad ukazuje rozdíl v chování mezi těmito dvěma přetíženími metody. V případě hodnot a se první porovnání vrátí, protože kompilátor automaticky provádí rozšiřující převod a volá metodu , zatímco druhé porovnání vrátí , protože kompilátor volá Byte SByte true Equals(Int16) false Equals(Object) metodu .

using System;

public class Example
{
   static short value = 112;

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

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

      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);

      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 (Int16) = 112 (Byte): False
//
//       value = int1:             False
//       112 (Int16) = 112 (Int32): False
//
//       value = sbyte1:            True
//       112 (Int16) = 112 (SByte): False
//
//       value = ushort1:            False
//       112 (Int16) = 112 (UInt16): False
//
//       value = dec1:                False
//       112 (Int16) = 112 (Decimal): False
//
//       value = dbl1:               False
//       112 (Int16) = 112 (Double): False

Platí pro