This topic has not yet been rated - Rate this topic

ValueType.Equals Method

Indicates whether this instance and a specified object are equal.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
public override bool Equals(
	Object obj
)

Parameters

obj
Type: System.Object
Another object to compare to.

Return Value

Type: System.Boolean
true if obj and this instance are the same type and represent the same value; otherwise, false.

The default implementation of the Equals method uses reflection to compare the corresponding fields of obj and this instance. Override the Equals method for a particular type to improve the performance of the method and more closely represent the concept of equality for the type.

The following example demonstrates how the Equals method can be overridden by a derived value type.


	public struct Complex 
	{
		public double m_Re;
		public double m_Im;

		public override bool Equals( object ob ){
			if( ob is Complex ) {
				Complex c = (Complex) ob;
				return m_Re==c.m_Re && m_Im==c.m_Im;
			}
			else {
				return false;
			}
		}

		public override int GetHashCode(){
			return m_Re.GetHashCode() ^ m_Im.GetHashCode();
		}
	}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Structs with fields of floating-point types
For structs that contain fields of floating-point types (float/Single and double/Double), the default implementation of Equals may not fully respect rules for floating-point equality. In particular, it may compare fields which contain floating-point zero that differs in sign as unequal, even though Single.Equals and Double.Equals, as well as the equality operators in both C# and VB, will compare them as equal. $0$0 $0 $0See the following Connect bug for more details:$0 $0https://connect.microsoft.com/VisualStudio/feedback/details/578339/possible-clr-incorrect-equals-return-value-from-any-value-type-that-defines-double-data-type-members$0