ValueType.Equals(Object) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指示此实例与指定对象是否相等。
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
;否则为 false
。
示例
以下示例演示如何 Equals 由派生值类型替代 方法。
public ref struct Complex
{
public:
double m_Re;
double m_Im;
virtual bool Equals( Object^ ob ) override
{
if ( dynamic_cast<Complex^>(ob) )
{
Complex^ c = dynamic_cast<Complex^>(ob);
return m_Re == c->m_Re && m_Im == c->m_Im;
}
else
{
return false;
}
}
virtual int GetHashCode() override
{
return m_Re.GetHashCode() ^ m_Im.GetHashCode();
}
};
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();
}
}
type Complex() =
member val m_Re = 0. with get, set
member val m_Im = 0. with get, set
override this.Equals(ob) =
match ob with
| :? Complex as c ->
this.m_Re = c.m_Re && this.m_Im = c.m_Im
| _ -> false
override this.GetHashCode() =
this.m_Re.GetHashCode() ^^^ this.m_Im.GetHashCode()
Public Structure Complex
Private m_Re As Double
Private m_Im As Double
Public Overloads Function Equals(ob As Object) As Boolean
If TypeOf ob Is Complex Then
Dim c As Complex = CType(ob, Complex)
Return m_Re = c.m_Re And m_Im = c.m_Im
Else
Return False
End If
End Function
Public Overloads Function GetHashCode() As Integer
Return m_Re.GetHashCode() ^ m_Im.GetHashCode()
End Function
End Structure
注解
方法ValueType.Equals(Object)重写 Object.Equals(Object) ,并为.NET Framework中的所有值类型提供值相等性的默认实现。
默认实现对当前实例的每个字段调用 Object.Equals(Object) , obj
如果所有字段都相等,则 true
返回 。
提示
特别是如果值类型包含引用类型的字段,则应重写 Equals(Object) 方法。 这可以提高性能,并使你能够更密切地表示类型相等的含义。
Windows 运行时说明
对 Windows 运行时 结构调用 Equals 方法时,它为不重写 Equals的值类型提供默认行为。 这是.NET Framework为Windows 运行时 (.NET Framework Windows 应用商店应用和Windows 运行时) 提供支持的一部分。 Windows 运行时结构不能重写 Equals,即使它们使用 C# 或 Visual Basic 编写,因为它们不能有方法。 (此外,Windows 运行时中的结构本身不会继承 ValueType.) 但是,当你在 C# 或 Visual Basic 代码中使用时,它们似乎具有 ToString、 Equals和 GetHashCode 方法,.NET Framework为这些方法提供默认行为。