Type.IsSubclassOf(Type) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
Parametrar
- c
- Type
Den typ som ska jämföras med den aktuella typen.
Returer
true om strömmen Type härleds från c, annars , false. Den här metoden returnerar false även om c och strömmen Type är lika med.
Implementeringar
- Attribut
Undantag
c är null.
Exempel
I följande exempel skapas en klass med namnet Class1 och en härledd klass med namnet DerivedC1. Den anropar IsSubclassOf metoden för att visa att DerivedC1 är en underklass av 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
Kommentarer
Du kan anropa IsSubclassOf metoden för att fastställa något av följande:
Om en klass härleds från en annan.
Om en typ härleds från ValueType. Är dock IsValueType ett effektivare sätt att avgöra om en typ är en värdetyp.
Om en typ härleds från Enum. Metoden är dock IsEnum ett effektivare sätt att avgöra om en typ är en uppräkning.
Om en typ är ett ombud, det vill: om den härleds från antingen Delegate eller MulticastDelegate.
Metoden IsSubclassOf kan inte användas för att avgöra om ett gränssnitt härleds från ett annat gränssnitt eller om en klass implementerar ett gränssnitt. IsAssignableFrom Använd metoden för det ändamålet, som i följande exempel visas.
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
Om den aktuella Type representerar en typparameter i definitionen av en generisk typ eller allmän metod härleds den från dess klassvillkor eller från System.Object om den inte har någon klassbegränsning.
Note
Förutom när det används med gränssnitt, IsSubclassOf är converse för IsAssignableFrom. Det vill säger, om t1.IsSubclassOf(t2) är , så true är också t2.IsAssignableFrom(t1)true.
Den här metoden kan åsidosättas av en härledd klass.