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 Strom Type von c; andernfalls falseabgeleitet . Diese Methode gibt auch zurück false , ob c und der aktuelle Type Wert gleich ist.
Implementiert
- Attribute
Ausnahmen
c ist null.
Beispiele
Im folgenden Beispiel wird eine Klasse namens Class1 und eine abgeleitete Klasse mit dem Namen erstellt DerivedC1. Sie ruft die IsSubclassOf Methode auf, um anzuzeigen, dass DerivedC1 es sich um eine Unterklasse von 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 abgeleitet wird.
Gibt an, ob ein Typ von ValueType. Dies IsValueType ist jedoch eine effizientere Methode, um zu bestimmen, ob ein Typ ein Werttyp ist.
Gibt an, ob ein Typ von Enum. Die Methode ist jedoch eine effizientere Methode, um festzustellen, IsEnum ob es sich bei einem Typ um eine Enumeration handelt.
Gibt an, ob es sich bei einem Typ um eine Stellvertretung handelt, d. h., ob er von einem Delegate oder MulticastDelegateeinem anderen abgeleitet wird.
Die IsSubclassOf Methode kann nicht verwendet werden, um festzustellen, ob eine Schnittstelle von einer anderen Schnittstelle abgeleitet wird oder ob eine Klasse eine Schnittstelle implementiert. Verwenden Sie die IsAssignableFrom Methode für diesen Zweck, wie im folgenden Beispiel gezeigt.
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 Parameter einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, wird er von der Klasseneinschränkung abgeleitet oder von System.Object dem, wenn er keine Klasseneinschränkung aufweist.
Note
Außer wenn sie mit Schnittstellen verwendet wird, IsSubclassOf ist das Gegenteil von IsAssignableFrom. Das heißt, wenn t1.IsSubclassOf(t2) ja true, dann t2.IsAssignableFrom(t1) ist es auch true.
Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.