Int32.Equals 方法

定义

返回一个值,该值指示此实例是否等于指定的 Int32 值。

重载

Equals(Int32)

返回一个值,该值指示此实例是否等于指定的 Int32 值。

Equals(Object)

返回一个值,该值指示此实例是否等于指定的对象。

Equals(Int32)

Source:
Int32.cs
Source:
Int32.cs
Source:
Int32.cs

返回一个值,该值指示此实例是否等于指定的 Int32 值。

C#
public bool Equals (int obj);

参数

obj
Int32

要与此实例进行比较的 Int32 值。

返回

如果 true 的值与此实例相同,则为 obj;否则为 false

实现

注解

此方法实现 System.IEquatable<T> 接口,并且性能略好于 Int32.Equals(Object) ,因为它不必将 参数转换为 obj 对象。

调用方说明

编译器重载解析可能说明两 Equals(Int32) 种方法重载的行为存在明显差异。 如果定义了 参数和 之间的Int32隐式转换obj,并且参数未类型化为 ,Object编译器将执行隐式转换并调用 Equals(Int32) 方法。 否则,它们会调用 Equals(Object) 方法,如果其obj参数不是Int32值,则该方法始终返回 false 。 以下示例演示了两个方法重载之间的行为差异。 对于 、、 和 值,第一个比较返回true是因为编译器自动执行扩大转换并调用 Equals(Int32) 方法,而第二个比较返回false是因为编译器调用 Equals(Object) 方法。UInt16SByteInt16Byte

C#
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

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Equals(Object)

Source:
Int32.cs
Source:
Int32.cs
Source:
Int32.cs

返回一个值,该值指示此实例是否等于指定的对象。

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

参数

obj
Object

与此实例进行比较的对象。

返回

如果 trueobj 的实例并且等于此实例的值,则为 Int32;否则为 false

示例

以下示例说明 Equals 在 的上下文 Int32中使用 ,比较两个 int 值,如果它们表示相同的数字,则返回 true ,或者 false 如果它们不表示,则返回 。

C#
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");

调用方说明

编译器重载解析可能说明两 Equals(Int32) 种方法重载的行为存在明显差异。 如果定义了 参数和 之间的Int32隐式转换obj,并且参数未类型化为 ,Object编译器将执行隐式转换并调用 Equals(Int32) 方法。 否则,它们会调用 Equals(Object) 方法,如果其obj参数不是Int32值,则该方法始终返回 false 。 以下示例演示了两个方法重载之间的行为差异。 对于 、、 和 值,第一个比较返回true是因为编译器自动执行扩大转换并调用 Equals(Int32) 方法,而第二个比较返回false是因为编译器调用 Equals(Object) 方法。UInt16SByteInt16Byte

C#
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

另请参阅

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0