Type.IsSubclassOf(Type) Metoda

Definice

Určuje, zda je Type aktuální odvozen ze zadaného Type parametru .

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

Parametry

c
Type

Typ, který se má porovnat s aktuálním typem.

Návraty

Boolean

true Pokud je aktuální Type odvozen z , jinak c false . Tato metoda také vrátí false , pokud a aktuální jsou c Type stejné.

Implementuje

Atributy

Výjimky

Příklady

Následující příklad vytvoří třídu s názvem Class1 a odvozenou třídu s názvem DerivedC1 . Volá metodu IsSubclassOf , která ukáže, DerivedC1 že je podtřídou 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
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

Poznámky

Metodu můžete IsSubclassOf zavolat, abyste zjistili:

  • Určuje, zda je jedna třída odvozena od jiné.

  • Zda je typ odvozen z ValueType . Je však IsValueType efektivnější způsob, jak určit, zda je typ typu hodnoty.

  • Zda je typ odvozen z Enum . Metoda je IsEnum však efektivnější způsob, jak určit, zda je typ výčtu.

  • Zda je typ delegát, to znamená zda je odvozen z Delegate nebo MulticastDelegate .

Metodu nelze použít k určení, zda rozhraní je odvozeno z jiného rozhraní nebo zda IsSubclassOf třída implementuje rozhraní. Pro tento IsAssignableFrom účel použijte metodu , jak ukazuje následující příklad.

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
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

Pokud aktuální představuje parametr typu v definici obecného typu nebo obecné metody, je odvozen z omezení třídy nebo z , pokud nemá Type System.Object žádné omezení třídy.

Poznámka

S výjimkou případů, kdy IsSubclassOf se používá s rozhraními, je naopak IsAssignableFrom . To znamená, že t1.IsSubclassOf(t2) pokud je , pak je také true t2.IsAssignableFrom(t1) true .

Tato metoda může být přepsána odvozenou třídou.

Platí pro

Viz také