Type.IsSubclassOf(Type) Metod

Definition

Avgör om strömmen Type härleds från den angivna Type.

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.

Gäller för

Se även