Type.IsSubclassOf(Type) Methode

Definition

Bestimmt, ob der aktuelle Type vom angegebenen Type abgeleitet ist.

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

Parameter

c
Type

Der Typ, der mit dem aktuellen Typ verglichen werden soll.

Gibt zurück

true, wenn der aktuelle Type von c abgeleitet ist, andernfalls false. Diese Methode gibt auch dann false zurück, wenn c und der aktuelle Type gleich sind.

Implementiert

Attribute

Ausnahmen

c ist null.

Beispiele

Im folgenden Beispiel wird eine Klasse mit dem Namen Class1 und eine abgeleitete Klasse mit dem Namen DerivedC1erstellt. Sie ruft die IsSubclassOf -Methode auf, um zu zeigen, dass DerivedC1 es sich um eine Unterklasse von handelt 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
type Class1() = class end
type DerivedC1() = inherit Class1()

printfn $"DerivedC1 subclass of Class1: {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

Hinweise

Sie können die IsSubclassOf -Methode aufrufen, um folgendes zu bestimmen:

  • Gibt an, ob eine Klasse von einer anderen abstammt.

  • Gibt an, ob ein Typ von abgeleitet ist ValueType. Es ist jedoch eine effizientere Methode, um zu bestimmen, IsValueType ob ein Typ ein Werttyp ist.

  • Gibt an, ob ein Typ von abgeleitet ist Enum. Die IsEnum -Methode ist jedoch eine effizientere Methode, um zu bestimmen, ob ein Typ eine Enumeration ist.

  • Gibt an, ob ein Typ ein Delegat ist, d. h. ob er von oder DelegateMulticastDelegateabgeleitet ist.

Die IsSubclassOf -Methode kann nicht verwendet werden, um zu bestimmen, ob eine Schnittstelle von einer anderen Schnittstelle abgeleitet ist oder ob eine Klasse eine Schnittstelle implementiert. Verwenden Sie zu diesem Zweck die IsAssignableFrom -Methode, wie das folgende Beispiel zeigt.

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
type IInterface =
    abstract Display : unit -> unit

type Implementation() =
    interface IInterface with
        member _.Display() = printfn "The implementation..."

printfn $"Implementation is a subclass of IInterface:   {typeof<Implementation>.IsSubclassOf typeof<IInterface>}"
printfn $"IInterface is assignable from Implementation: {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

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, wird er von seiner Klasseneinschränkung oder von abgeleitet System.Object , wenn er keine Klasseneinschränkung aufweist.

Hinweis

Außer wenn sie mit Schnittstellen verwendet wird, IsSubclassOf ist das Umgekehrte von IsAssignableFrom. Das heißt, wenn t1.IsSubclassOf(t2) ist true, dann t2.IsAssignableFrom(t1) ist auch true.

Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.

Gilt für:

Weitere Informationen