_Type.IsSubclassOfとは? わかりやすく解説

Type.IsSubclassOf メソッド

現在の Type によって表されるクラスが、指定された Type によって表されるクラスから派生しているかどうかを判断します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public Overridable Function
 IsSubclassOf ( _
    c As Type _
) As Boolean
[ComVisibleAttribute(true)] 
public virtual bool IsSubclassOf (
    Type c
)
[ComVisibleAttribute(true)] 
public:
virtual bool IsSubclassOf (
    Type^ c
)
/** @attribute ComVisibleAttribute(true) */ 
public boolean IsSubclassOf (
    Type c
)
ComVisibleAttribute(true) 
public function IsSubclassOf (
    c : Type
) : boolean

パラメータ

c

現在の Type と比較する Type。

戻り値
c パラメータによって表される Type と現在の Type がクラスを表し、現在の Type によって表されるクラスが c によって表されるクラスから派生している場合は true。それ以外の場合は false。c と現在の Type が同じクラスを表す場合、このメソッドは false も返します。

例外例外
例外の種類条件

ArgumentNullException

c パラメータが null 参照 (Visual Basic では Nothing) です。

解説解説

IsSubclassOf メソッドは、インターフェイスが別のインターフェイスから派生しているかどうか、またはクラスがインターフェイスを実装しているかどうかを判断するために使用できません。この処理には、GetInterface メソッドを使用します。

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

メモメモ

IsSubclassOf が IsAssignableFrom の逆である場合、t1.IsSubclassOf(t2) が true であれば、t2.IsAssignableFrom(t1) も true です。

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

使用例使用例

IsSubclassOf メソッドの使用例を次に示します。

Imports System

Public Interface IMyIfc
End Interface 'IMyIfc

Public Interface IDerived
    Inherits IMyIfc
End Interface 'IDerived

Public Class Class1
    Implements IMyIfc
End Class 'Class1

Public Class MyDerivedClass
    Inherits Class1
End Class 'MyDerivedClass

Class IsSubclassTest

    Public Shared Sub Main()
        Dim imyifcType As Type = GetType(IMyIfc)
        Dim imyderivedType As Type = GetType(IDerived)
        Dim mc As New Class1()
        Dim mcType As Type = mc.GetType()
        Dim mdc = New MyDerivedClass()
        Dim mdcType As Type = mdc.GetType()
        Dim array(10) As Integer
        Dim arrayOfIntsType As Type = array.GetType()
        Dim arrayType As Type = GetType(Array)

        Console.WriteLine("Is Array a derived class of int[]?
 {0}", arrayType.IsSubclassOf(arrayOfIntsType))
        Console.WriteLine("Is int [] a derived class of Array?
 {0}", arrayOfIntsType.IsSubclassOf(arrayType))
        Console.WriteLine("Is IMyIfc a derived class of IDerived?
 {0}", imyifcType.IsSubclassOf(imyderivedType))
        Console.WriteLine("Is myclass a derived class of Class1?
 {0}", mcType.IsSubclassOf(mcType))
        Console.WriteLine("Is myderivedclass a derived class of
 Class1? {0}", mdcType.IsSubclassOf(mcType))
    End Sub 'Main
End Class 'IsSubclassTest
using System;
public interface IMyIfc {}
public interface IDerived : IMyIfc {}
public class Class1 : IMyIfc {}
public class MyDerivedClass : Class1 {}
class IsSubclassTest 
{
    public static void Main()
 
    {
        Type imyifcType = typeof(IMyIfc);
        Type imyderivedType = typeof(IDerived);
        Class1 mc = new Class1();
        Type mcType = mc.GetType();
        Class1 mdc = new MyDerivedClass();
        Type mdcType = mdc.GetType();
        int [] array  = new int
 [10];
        Type arrayOfIntsType = array.GetType();
        Type arrayType = typeof(Array);
    
        Console.WriteLine("Is Array a derived class of int[]?
 {0}", arrayType.IsSubclassOf(arrayOfIntsType));
        Console.WriteLine("Is int [] a derived class
 of Array? {0}", arrayOfIntsType.IsSubclassOf(arrayType));
        Console.WriteLine("Is IMyIfc a derived class of IDerived?
 {0}", imyifcType.IsSubclassOf(imyderivedType));
        Console.WriteLine("Is myclass a derived class of
 Class1? {0}", mcType.IsSubclassOf(mcType));
        Console.WriteLine("Is myderivedclass a derived class
 of Class1? {0}", mdcType.IsSubclassOf(mcType));
    }
}
using namespace System;
interface class IMyIfc{};
interface class IDerived: public IMyIfc{};
public ref class Class1: public
 IMyIfc{};

public ref class MyDerivedClass: public
 Class1{};

int main()
{
   Type^ imyifcType = IMyIfc::typeid;
   Type^ imyderivedType = IDerived::typeid;
   Class1^ mc = gcnew Class1;
   Type^ mcType = mc->GetType();
   Class1^ mdc = gcnew MyDerivedClass;
   Type^ mdcType = mdc->GetType();
   array<Int32>^arr = gcnew array<Int32>(10);
   Type^ arrayOfIntsType = arr->GetType();
   Type^ arrayType = Array::typeid;
   Console::WriteLine( "Is Array a derived class of Int32[]?
 {0}", arrayType->IsSubclassOf( arrayOfIntsType ).ToString() );
   Console::WriteLine( "Is Int32[] a derived class of Array?
 {0}", arrayOfIntsType->IsSubclassOf( arrayType ).ToString() );
   Console::WriteLine( "Is IMyIfc a derived class of IDerived?
 {0}", imyifcType->IsSubclassOf( imyderivedType ).ToString() );
   Console::WriteLine( "Is myclass a derived class of Class1?
 {0}", mcType->IsSubclassOf( mcType ).ToString() );
   Console::WriteLine( "Is myderivedclass a derived class
 of Class1? {0}", mdcType->IsSubclassOf( mcType ).ToString() );
}
import System.*;

public interface IMyIfc
{
} //IMyIfc

public interface IDerived extends IMyIfc
{
} //IDerived

public class Class1 implements IMyIfc
{
} //Class1

public class MyDerivedClass extends Class1
{
} //MyDerivedClass

class IsSubclassTest
{
    public static void main(String[]
 args)
    {
        Type iMyIfcType = IMyIfc.class.ToType();
        Type iMyDerivedType = IDerived.class.ToType();
        Class1 mc = new Class1();
        Type mcType = mc.GetType();
        Class1 mdc = new MyDerivedClass();
        Type mdcType = mdc.GetType();
        int array[] = new int[10];
        Type arrayOfIntsType = array.GetType();
        Type arrayType = Array.class.ToType();

        Console.WriteLine("Is Array a derived class of int[]?
 {0}",
            System.Convert.ToString(arrayType.IsSubclassOf(arrayOfIntsType)));
        Console.WriteLine("Is int [] a derived class
 of Array? {0}", 
            System.Convert.ToString(arrayOfIntsType.IsSubclassOf(arrayType)));
        Console.WriteLine("Is IMyIfc a derived class of IDerived?
 {0}", 
            System.Convert.ToString(iMyIfcType.IsSubclassOf(iMyDerivedType)));
        Console.WriteLine("Is myclass a derived class of
 Class1? {0}", 
            System.Convert.ToString(mcType.IsSubclassOf(mcType)));
        Console.WriteLine("Is myderivedclass a derived class
 of Class1? {0}", 
            System.Convert.ToString(mdcType.IsSubclassOf(mcType)));
    } //main
} //IsSubclassTest
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

_Type.IsSubclassOf メソッド

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

COM オブジェクトに、Type.IsSubclassOf メソッドへのバージョンに依存しないアクセスが用意されています。

このメソッドは、CLS に準拠していません。  

名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Function IsSubclassOf ( _
    c As Type _
) As Boolean
bool IsSubclassOf (
    Type c
)
bool IsSubclassOf (
    Type^ c
)
boolean IsSubclassOf (
    Type c
)
function IsSubclassOf (
    c : Type
) : boolean

パラメータ

c

現在の Type と比較する Type。

戻り値
c パラメータによって表される Type と現在の Type がクラスを表し、現在の Type によって表されるクラスが c によって表されるクラスから派生している場合は true。それ以外の場合は false。c と現在の Type が同じクラスを表す場合、このメソッドは false も返します。

解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「_Type.IsSubclassOf」の関連用語

_Type.IsSubclassOfのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



_Type.IsSubclassOfのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS