Type.IsSubclassOf(Type) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 DerivedC1
erstellt. 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.