Int32.Equals 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回一个值,该值指示此实例是否等于指定的 Int32 值。
重载
Equals(Int32) |
返回一个值,该值指示此实例是否等于指定的 Int32 值。 |
Equals(Object) |
返回一个值,该值指示此实例是否等于指定的对象。 |
Equals(Int32)
- Source:
- Int32.cs
- Source:
- Int32.cs
- Source:
- Int32.cs
返回一个值,该值指示此实例是否等于指定的 Int32 值。
public:
virtual bool Equals(int obj);
public bool Equals (int obj);
override this.Equals : int -> bool
Public Function Equals (obj As Integer) As Boolean
参数
返回
如果 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
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
适用于
Equals(Object)
- Source:
- Int32.cs
- Source:
- Int32.cs
- Source:
- Int32.cs
返回一个值,该值指示此实例是否等于指定的对象。
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
参数
- obj
- Object
与此实例进行比较的对象。
返回
如果 true
是 obj
的实例并且等于此实例的值,则为 Int32;否则为 false
。
示例
以下示例说明 Equals
在 的上下文 Int32
中使用 ,比较两个 int
值,如果它们表示相同的数字,则返回 true
,或者 false
如果它们不表示,则返回 。
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
调用方说明
编译器重载解析可能说明两 Equals(Int32) 种方法重载的行为存在明显差异。 如果定义了 参数和 之间的Int32隐式转换obj
,并且参数未类型化为 ,Object编译器将执行隐式转换并调用 Equals(Int32) 方法。 否则,它们会调用 Equals(Object) 方法,如果其obj
参数不是Int32值,则该方法始终返回 false
。 以下示例演示了两个方法重载之间的行为差异。 对于 、、 和 值,第一个比较返回true
是因为编译器自动执行扩大转换并调用 Equals(Int32) 方法,而第二个比较返回false
是因为编译器调用 Equals(Object) 方法。UInt16SByteInt16Byte
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