Type.IsSubclassOf(Type) メソッド

定義

現在の Type が、指定した Type から派生しているかどうかを判断します。

public:
 virtual bool IsSubclassOf(Type ^ c);
public virtual bool IsSubclassOf (Type c);
[System.Runtime.InteropServices.ComVisible(true)]
public virtual bool IsSubclassOf (Type c);
abstract member IsSubclassOf : Type -> bool
override this.IsSubclassOf : Type -> bool
[<System.Runtime.InteropServices.ComVisible(true)>]
abstract member IsSubclassOf : Type -> bool
override this.IsSubclassOf : Type -> bool
Public Overridable Function IsSubclassOf (c As Type) As Boolean

パラメーター

c
Type

現在の型と比較する型。

戻り値

Boolean

現在の Typec から派生している場合は true。それ以外の場合は falsefalse と現在の c とが等価の場合も、このメソッドは Type を返します。

実装

属性

例外

cnullです。

次の例では、という名前のクラス Class1 とという名前の派生クラスを作成し DerivedC1 ます。 これは、メソッドを呼び出して、 IsSubclassOf がのサブクラスであることを示し DerivedC1 Class1 ます。

using System;

public class Class1 { }
public class DerivedC1 : Class1 { }

class IsSubclassTest
{
   public static void Main()
   {
      Console.WriteLine("DerivedC1 subclass of Class1: {0}",
                         typeof(DerivedC1).IsSubclassOf(typeof(Class1)));
   }
}
// The example displays the following output:
//        DerivedC1 subclass of Class1: True
Public Class Class1
End Class

Public Class DerivedC1 : Inherits Class1
End Class

Public Module Example
   Public Sub Main()
      Console.WriteLine("DerivedC1 subclass of Class1: {0}",
                         GetType(DerivedC1).IsSubClassOf(GetType(Class1)))
   End Sub
End Module
' The example displays the following output:
'       DerivedC1 subclass of Class1: True

注釈

メソッドを呼び出して IsSubclassOf 、次のいずれかを決定できます。

  • あるクラスが別のクラスから派生しているかどうか。

  • 型がから派生しているかどうか ValueType 。 ただし、は、 IsValueType 型が値型であるかどうかを判断するより効率的な方法です。

  • 型がから派生しているかどうか Enum 。 ただし、メソッドは、 IsEnum 型が列挙型であるかどうかを判断するより効率的な方法です。

  • 型がデリゲートであるかどうか、つまり、型がまたはのどちらから派生するかを示し Delegate MulticastDelegate ます。

メソッドを使用して、 IsSubclassOf インターフェイスが別のインターフェイスから派生しているかどうか、またはクラスがインターフェイスを実装しているかどうかを判断することはできません。 次の例に示すように、この目的にはメソッドを使用し IsAssignableFrom ます。

using System;

public interface IInterface
{
   void Display();
}

public class Implementation : IInterface
{
   public void Display()
   {
      Console.WriteLine("The implementation...");
   }
}

public class Example
{
   public static void Main()
   {
      Console.WriteLine("Implementation is a subclass of IInterface:   {0}",
                        typeof(Implementation).IsSubclassOf(typeof(IInterface)));
      Console.WriteLine("IInterface is assignable from Implementation: {0}",
                        typeof(IInterface).IsAssignableFrom(typeof(Implementation)));
   }
}
// The example displays the following output:
//       Implementation is a subclass of IInterface:   False
//       IInterface is assignable from Implementation: True
Public Interface IInterface
   Sub Display()
End Interface

Public Class Implementation : Implements IInterface
   Public Sub Display() _
      Implements IInterface.Display

      Console.WriteLine("The implementation...")
   End Sub
End Class

Module Example
   Public Sub Main()
      Console.WriteLine("Implementation is a subclass of IInterface:   {0}",
                        GetType(Implementation).IsSubclassOf(GetType(IInterface)))
      Console.WriteLine("IInterface is assignable from Implementation: {0}",
                        GetType(IInterface).IsAssignableFrom(GetType(Implementation)))
   End Sub
End Module
' The example displays the following output:
'       Implementation is a subclass of IInterface:   False
'       IInterface is assignable from Implementation: True

現在のが Type ジェネリック型またはジェネリックメソッドの定義内の型パラメーターを表している場合は、クラス制約から派生し System.Object ます。クラス制約がない場合は、から派生します。

注意

インターフェイスで使用する場合を除き、 IsSubclassOf はの逆です IsAssignableFrom 。 つまり、がの場合は、 t1.IsSubclassOf(t2) true もに t2.IsAssignableFrom(t1) true なります。

このメソッドは、派生クラスによってオーバーライドできます。

適用対象

こちらもご覧ください