Type.BaseType プロパティ

定義

現在の Type の直接の継承元である型を取得します。Gets the type from which the current Type directly inherits.

public:
 abstract property Type ^ BaseType { Type ^ get(); };
public abstract Type BaseType { get; }
member this.BaseType : Type
Public MustOverride ReadOnly Property BaseType As Type

プロパティ値

現在の Type の直接の継承元の Type。現在の nullType クラスまたはインターフェイスを表す場合は ObjectThe Type from which the current Type directly inherits, or null if the current Type represents the Object class or an interface.

実装

次の例は、プロパティBaseTypeの使用方法を示しています。The following example demonstrates using the BaseType property.

using namespace System;
void main()
{
   Type^ t = int::typeid;
   Console::WriteLine( "{0} inherits from {1}.", t, t->BaseType );
}

using System;
class TestType 
{
    public static void Main() 
    {
        Type t = typeof(int);
        Console.WriteLine("{0} inherits from {1}.", t,t.BaseType);
    }
}
Class TestType
   
    Public Shared Sub Main()
        Dim t As Type = GetType(Integer)
        Console.WriteLine("{0} inherits from {1}.", t, t.BaseType)
    End Sub
End Class

次の例では、再帰を使用して、アセンブリ内で見つかった各クラスの完全な継承階層を一覧表示します。The following example uses recursion to list the complete inheritance hierarchy of each class found in an assembly. この例では、とCいう名前のクラスからB派生するという名前のクラスを定義します。 Aこのクラスは、という名前のクラスから派生します。The example defines a class named C that derives from a class named B, which, in turn, derives from a class named A.

using System;

public class Example
{
   public static void Main()
   {
      foreach (var t in typeof(Example).Assembly.GetTypes()) {
         Console.WriteLine("{0} derived from: ", t.FullName);
         var derived = t;
         do { 
            derived = derived.BaseType;
            if (derived != null) 
               Console.WriteLine("   {0}", derived.FullName);

         } while (derived != null);
         Console.WriteLine(); 
      } 
   }
}

public class A {} 

public class B : A
{}

public class C : B   
{}
// The example displays the following output:
//       Example derived from:
//          System.Object
//       
//       A derived from:
//          System.Object
//       
//       B derived from:
//          A
//          System.Object
//       
//       C derived from:
//          B
//          A
//          System.Object
Public Class Example
   Public Shared Sub Main()
      For Each t In GetType(Example).Assembly.GetTypes()
         Console.WriteLine("{0} derived from: ", t.FullName)
         Dim derived As Type = t
         Do 
            derived = derived.BaseType
            If derived IsNot Nothing Then 
               Console.WriteLine("   {0}", derived.FullName)
            End If   
         Loop While derived IsNot Nothing
         Console.WriteLine() 
      Next 
   End Sub
End Class

Public Class A 
End Class

Public Class B : Inherits A
End Class

Public Class C : Inherits B
End Class
' The example displays the following output:
'       Example derived from:
'          System.Object
'       
'       A derived from:
'          System.Object
'       
'       B derived from:
'          A
'          System.Object
'       
'       C derived from:
'          B
'          A
'          System.Object

注釈

基本型は、現在の型が直接継承する型です。The base type is the type from which the current type directly inherits. Objectは、基本型を持たない唯一の型であるためnull 、のObject基本型として返されます。Object is the only type that does not have a base type, therefore null is returned as the base type of Object.

インターフェイスは、0個以上の基本インターフェイスから継承します。したがって、オブジェクトがnull Typeインターフェイスを表す場合、このプロパティはを返します。Interfaces inherit from zero or more base interfaces; therefore, this property returns null if the Type object represents an interface. 基本インターフェイスは、またはGetInterfaces FindInterfacesを使用して決定できます。The base interfaces can be determined with GetInterfaces or FindInterfaces.

現在Typeのが構築されたジェネリック型を表している場合、基本型はジェネリック引数を反映します。If the current Type represents a constructed generic type, the base type reflects the generic arguments. たとえば、次のような宣言があるとします。For example, consider the following declarations:

generic<typename U> ref class B { };
generic<typename T> ref class C : B<T> { };
class B<U> { }
class C<T> : B<T> { }
Class B(Of U)
End Class
Class C(Of T)
    Inherits B(Of T)
End Class

構築されたC<int>C(Of Integer) (Visual Basic) の場合BaseType 、プロパティB<int>はを返します。For the constructed type C<int> (C(Of Integer) in Visual Basic), the BaseType property returns B<int>.

現在Typeのがジェネリック型定義の型パラメーターを表しているBaseType場合、は、クラスの制約、つまり、型パラメーターが継承する必要があるクラスを返します。If the current Type represents a type parameter of a generic type definition, BaseType returns the class constraint, that is, the class the type parameter must inherit. クラスの制約がない場合、 BaseTypeSystem.Objectを返します。If there is no class constraint, BaseType returns System.Object.

このプロパティは読み取り専用です。This property is read-only.

適用対象

こちらもご覧ください