ValueType.Equals(Object) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Indica se esta instância e um objeto especificado são iguais.
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
Parâmetros
- obj
- Object
O objeto para comparar com a instância atual.
Devoluções
true se obj e esta instância forem do mesmo tipo e representarem o mesmo valor; caso contrário, false.
Exemplos
O exemplo seguinte demonstra como o Equals método pode ser sobreposto por um tipo de valor derivado.
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
Observações
O método ValueType.Equals(Object) sobrepõe Object.Equals(Object) e fornece a implementação padrão da igualdade de valores para todos os tipos de valores em .NET.
A implementação por defeito chama Object.Equals(Object) cada campo da instância atual e obj e retorna true se todos os campos forem iguais.
.NET 9 e posteriores, a implementação padrão de ValueType.Equals(Object) lança NotSupportedException se for aplicado InlineArrayAttribute ao tipo.
Importante
Particularmente se o seu tipo de valor contiver campos que são tipos de referência, deve sobrepor o Equals(Object) método. Isto pode melhorar o desempenho e permitir-lhe representar mais de perto o significado de igualdade para o tipo.
Notas para o Tempo de Execução do Windows
Quando chamas o método Equals numa estrutura Windows Runtime, ele fornece o comportamento padrão para tipos de valor que não sobrescrevem Equals. Isso faz parte do suporte que o .NET fornece para o Windows Runtime (consulte Suporte do .NET para aplicações da Windows Store epara o Windows Runtime). Windows Runtime estruturas não podem sobrescrever Equals, mesmo que sejam escritas com C# ou Visual Basic, porque não podem ter métodos. (Além disso, as estruturas no próprio Windows Runtime não herdam ValueType.) No entanto, parecem ter métodos ToString, Equals e GetHashCode quando os usa no seu código C# ou Visual Basic, e .NET fornece o comportamento padrão para esses métodos.