Type.Equals 方法

定义

确定当前 Type 的基础系统类型是否与指定 ObjectType 的基础系统类型相同。Determines if the underlying system type of the current Type is the same as the underlying system type of the specified Object or Type.

重载

Equals(Type)

确定当前 Type 的基础系统类型是否与指定 Type 的基础系统类型相同。Determines if the underlying system type of the current Type is the same as the underlying system type of the specified Type.

Equals(Object)

确定当前 Type 的基础系统类型是否与指定 Object 的基础系统类型相同。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)

确定当前 Type 的基础系统类型是否与指定 Type 的基础系统类型相同。Determines if the underlying system type of the current Type is the same as the underlying system type of the specified Type.

public:
 virtual bool Equals(Type ^ o);
public virtual bool Equals (Type o);
override this.Equals : Type -> bool
Public Overridable Function Equals (o As Type) As Boolean

参数

o
Type

该对象,其基础系统类型将与当前 Type 的基础系统类型相比较。The object whose underlying system type is to be compared with the underlying system type of the current Type.

返回

如果 true 的基础系统类型与当前 o 的基础系统类型相同,则为 Type;否则为 falsetrue if the underlying system type of o is the same as the underlying system type of the current Type; otherwise, false.

实现

示例

下面的示例使用Equals来比较两个类型。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
'

另请参阅

Equals(Object)

确定当前 Type 的基础系统类型是否与指定 Object 的基础系统类型相同。Determines if the underlying system type of the current Type object is the same as the underlying system type of the specified 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

参数

o
Object

该对象,其基础系统类型将与当前 Type 的基础系统类型相比较。The object whose underlying system type is to be compared with the underlying system type of the current Type. 为了使比较成功,o 必须能够被强制转换或转换为类型 Type 的一个对象。For the comparison to succeed, o must be able to be cast or converted to an object of type Type.

返回

如果 true 的基础系统类型与当前 o 的基础系统类型相同,则为 Type;否则为 falsetrue if the underlying system type of o is the same as the underlying system type of the current Type; otherwise, false. 如果 :此方法也会返回 falseThis method also returns false if: .

  • onull
  • o is null.

  • o 不能强制转换或转换为 Type 对象。
  • o cannot be cast or converted to a Type object.
  • 实现

    示例

    下面的示例使用Equals(Object)将各种Type对象实例与各种Object实例进行比较。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.
    

    对于本示例,特别要注意以下两个方面:Two things are particularly worth noting about the example:

    • Type TypeInfo与表示整数Type返回true的对象表示整数的对象比较,TypeInfo因为派生自。The comparison of a Type object that represents an integer with a TypeInfo object that represents an integer return true because TypeInfo is derived from Type.

    • 使用List(Of String)对象(封闭式Type泛型类型) IList<T>表示对象(开放式泛型类型)的对象比较返回falseThe comparison of a Type object that represents a IList<T> object (an open generic type) with a List(Of String) object (a closed generic type) returns false.

    注解

    此方法重写 Object.EqualsThis method overrides Object.Equals. 它强制o转换为类型Type的对象,并调用Type.Equals(Type)方法。It casts o to an object of type Type and calls the Type.Equals(Type) method.

    另请参阅

    适用于