Type.Equals メソッド

定義

現在の Type の基になるシステム型が、指定した Object または Type の基になるシステム型と同じかどうかを判断します。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.

戻り値

o の基になるシステム型が現在の Type の基になるシステム型と同じである場合は true。それ以外の場合は falsetrue if the underlying system type of o is the same as the underlying system type of the current Type; otherwise, false.

実装

次の例では、Equals を使用して2つの型を比較します。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.

戻り値

o の基になるシステム型が現在の Type の基になるシステム型と同じである場合は true。それ以外の場合は falsetrue if the underlying system type of o is the same as the underlying system type of the current Type; otherwise, false. 次の場合にも、このメソッドは false を返します。This 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.
    

    この例については、特に注意すべき点が2つあります。Two things are particularly worth noting about the example:

    • TypeInfoTypeから派生しているため true 整数を表す TypeInfo オブジェクトを持つ整数を表す Type オブジェクトの比較。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) オブジェクト (クローズジェネリック型) を使用して IList<T> オブジェクト (オープンジェネリック型) を表す Type オブジェクトを比較すると、falseが返されます。The 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.Equals をオーバーライドします。This method overrides Object.Equals. oType 型のオブジェクトにキャストし、Type.Equals(Type) メソッドを呼び出します。It casts o to an object of type Type and calls the Type.Equals(Type) method.

    こちらもご覧ください

    適用対象