次の方法で共有


Type.IsSubclassOf メソッド

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

Public Overridable Function IsSubclassOf( _
   ByVal c As Type _) As Boolean
[C#]
public virtual bool IsSubclassOf(Typec);
[C++]
public: virtual bool IsSubclassOf(Type* c);
[JScript]
public function IsSubclassOf(
   c : Type) : Boolean;

パラメータ

  • c
    現在の Type と比較する Type。

戻り値

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

例外

例外の種類 条件
ArgumentNullException c パラメータが null 参照 (Visual Basic では Nothing) です。

解説

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

使用例

[Visual Basic, C#, C++] 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

[C#] 
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));
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
public __gc __interface IMyIfc {};
public __gc __interface IDerived : IMyIfc {};
public __gc class Class1 : public IMyIfc {};
public __gc class MyDerivedClass : public Class1 {};

int 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();
   Int32 array[] = new Int32[10];
   Type*  arrayOfIntsType = array->GetType();
   Type*  arrayType = __typeof(Array);

   Console::WriteLine(S"Is Array a derived class of Int32[]? {0}", arrayType->IsSubclassOf(arrayOfIntsType).ToString());
   Console::WriteLine(S"Is Int32[] a derived class of Array? {0}", arrayOfIntsType->IsSubclassOf(arrayType).ToString());
   Console::WriteLine(S"Is IMyIfc a derived class of IDerived? {0}", imyifcType->IsSubclassOf(imyderivedType).ToString());
   Console::WriteLine(S"Is myclass a derived class of Class1? {0}", mcType->IsSubclassOf(mcType).ToString());
   Console::WriteLine(S"Is myderivedclass a derived class of Class1? {0}", mdcType->IsSubclassOf(mcType).ToString());
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

Type クラス | Type メンバ | System 名前空間 | BaseType