Type.Equals Método
Definición
Sobrecargas
Equals(Type) |
Determina si el tipo de sistema subyacente del objeto Type actual es igual que el tipo de sistema subyacente del objeto Type especificado.Determines if the underlying system type of the current Type is the same as the underlying system type of the specified Type. |
Equals(Object) |
Determina si el tipo del sistema subyacente del objeto Type actual es el mismo que el tipo del sistema subyacente del objeto Object especificado.Determines if the underlying system type of the current Type object is the same as the underlying system type of the specified Object. |
Equals(Type)
public:
bool Equals(Type ^ o);
public:
virtual bool Equals(Type ^ o);
public bool Equals (Type o);
public virtual bool Equals (Type o);
override this.Equals : Type -> bool
Public Function Equals (o As Type) As Boolean
Public Overridable Function Equals (o As Type) As Boolean
Parámetros
- o
- Type
Objeto cuyo tipo de sistema subyacente se va a comparar con el tipo de sistema subyacente del objeto Type actual.The object whose underlying system type is to be compared with the underlying system type of the current Type.
Devoluciones
Es true
si el tipo del sistema subyacente de o
coincide con el tipo del sistema subyacente del objeto Type actual; de lo contrario, es false
.true
if the underlying system type of o
is the same as the underlying system type of the current Type; otherwise, false
.
Implementaciones
Ejemplos
En el ejemplo siguiente Equals
se usa para comparar dos tipos.The following example uses Equals
to compare two types.
using System;
using System.Reflection;
class Example
{
public static void Main()
{
Type a = typeof(System.String);
Type b = typeof(System.Int32);
Console.WriteLine("{0} == {1}: {2}", a, b, a.Equals(b));
// The Type objects in a and b are not equal,
// because they represent different types.
a = typeof(Example);
b = new Example().GetType();
Console.WriteLine("{0} is equal to {1}: {2}", a, b, a.Equals(b));
// The Type objects in a and b are equal,
// because they both represent type Example.
b = typeof(Type);
Console.WriteLine("typeof({0}).Equals(typeof({1})): {2}", a, b, a.Equals(b));
// The Type objects in a and b are not equal,
// because variable a represents type Example
// and variable b represents type Type.
//Console.ReadLine();
}
}
//
/* This code example produces the following output:
System.String == System.Int32: False
Example is equal to Example: True
typeof(Example).Equals(typeof(System.Type)): False
*/
Imports System.Reflection
Class Example
Public Shared Sub Main()
Dim a As Type = GetType(System.String)
Dim b As Type = GetType(System.Int32)
Console.WriteLine("{0} = {1}: {2}", a, b, a.Equals(b))
' The Type objects in a and b are not equal,
' because they represent different types.
a = GetType(Example)
b = New Example().GetType()
Console.WriteLine("{0} is equal to {1}: {2}", a, b, a.Equals(b))
' The Type objects in a and b are equal,
' because they both represent type Example.
b = GetType(Type)
Console.WriteLine("typeof({0}).Equals(typeof({1})): {2}", a, b, a.Equals(b))
' The Type objects in a and b are not equal,
' because variable a represents type Example
' and variable b represents type Type.
'Console.ReadLine()
End Sub
End Class
'
' This code example produces the following output:
' System.String = System.Int32: False
' Example is equal to Example: True
' typeof(Example).Equals(typeof(System.Type)): False
'
Consulte también
Se aplica a
Equals(Object)
public:
override bool Equals(System::Object ^ o);
public override bool Equals (object o);
override this.Equals : obj -> bool
Public Overrides Function Equals (o As Object) As Boolean
Parámetros
- o
- Object
Objeto cuyo tipo de sistema subyacente se va a comparar con el tipo de sistema subyacente del objeto Type actual.The object whose underlying system type is to be compared with the underlying system type of the current Type. Para que la comparación se realice correctamente, o
debe poder convertirse en un objeto de tipo Type.For the comparison to succeed, o
must be able to be cast or converted to an object of type Type.
Devoluciones
Es
true
si el tipo del sistema subyacente de o
coincide con el tipo del sistema subyacente del objeto Type actual; de lo contrario, es false
.true
if the underlying system type of o
is the same as the underlying system type of the current Type; otherwise, false
. Este método también devuelve false
si:This method also returns false
if: El valor de
o
es null
.o
is null
.
o
no se puede convertir en un objeto Type.o
cannot be cast or converted to a Type object.
Implementaciones
Ejemplos
En el ejemplo siguiente Equals(Object) se usa para comparar varias Type instancias de objeto con varias Object instancias.The following example uses Equals(Object) to compare various Type object instances with various Object instances.
using System;
using System.Collections.Generic;
using System.Reflection;
public class Example
{
public static void Main()
{
Type t =typeof(int);
Object obj1 = typeof(int).GetTypeInfo();
IsEqualTo(t, obj1);
Object obj2 = typeof(String);
IsEqualTo(t, obj2);
t = typeof(Object);
Object obj3 = typeof(Object);
IsEqualTo(t, obj3);
t = typeof(List<>);
Object obj4 = (new List<String>()).GetType();
IsEqualTo(t, obj4);
t = typeof(Type);
Object obj5 = null;
IsEqualTo(t, obj5);
}
private static void IsEqualTo(Type t, Object inst)
{
Type t2 = inst as Type;
if (t2 != null)
Console.WriteLine("{0} = {1}: {2}", t.Name, t2.Name,
t.Equals(t2));
else
Console.WriteLine("Cannot cast the argument to a type.");
Console.WriteLine();
}
}
// The example displays the following output:
// Int32 = Int32: True
//
// Int32 = String: False
//
// Object = Object: True
//
// List`1 = List`1: False
//
// Cannot cast the argument to a type.
Imports System.Collections.Generic
Imports System.Reflection
Module Example
Public Sub Main()
Dim t As Type = GetType(Integer)
Dim obj1 As Object = GetType(Integer).GetTypeInfo()
IsEqualTo(t, obj1)
Dim obj2 As Object = GetType(String)
IsEqualTo(t, obj2)
t = GetType(Object)
Dim obj3 As Object = GetType(Object)
IsEqualTo(t, obj3)
t = GetType(List(Of ))
Dim obj4 As Object = (New List(Of String())).GetType()
IsEqualTo(t, obj4)
t = GetType(Type)
Dim obj5 As Object = Nothing
IsEqualTo(t, obj5)
End Sub
Private Sub IsEqualTo(t As Type, inst As Object)
Dim t2 As Type = TryCast(inst, Type)
If t2 IsNot Nothing Then
Console.WriteLine("{0} = {1}: {2}", t.Name, t2.Name,
t.Equals(t2))
Else
Console.WriteLine("Cannot cast the argument to a type.")
End If
Console.WriteLine()
End Sub
End Module
' The example displays the following output:
' Int32 = Int32: True
'
' Int32 = String: False
'
' Object = Object: True
'
' List`1 = List`1: False
'
' Cannot cast the argument to a type.
Dos cosas son especialmente importantes para el ejemplo:Two things are particularly worth noting about the example:
La comparación de un Type objeto que representa un entero con un TypeInfo objeto que representa un valor devuelto por un entero
true
porque TypeInfo se deriva de Type .The comparison of a Type object that represents an integer with a TypeInfo object that represents an integer returntrue
because TypeInfo is derived from Type.La comparación de un Type objeto que representa un IList<T> objeto (un tipo genérico abierto) con un
List(Of String)
objeto (un tipo genérico cerrado) devuelvefalse
.The comparison of a Type object that represents a IList<T> object (an open generic type) with aList(Of String)
object (a closed generic type) returnsfalse
.
Comentarios
Este método invalida Object.Equals.This method overrides Object.Equals. Convierte o
a un objeto de tipo Type y llama al Type.Equals(Type) método.It casts o
to an object of type Type and calls the Type.Equals(Type) method.