Leggi in inglese

Condividi tramite


Type.IsSubclassOf(Type) Metodo

Definizione

Determina se l'oggetto Type corrente deriva dall'oggetto Type specificato.

C#
public virtual bool IsSubclassOf (Type c);
C#
[System.Runtime.InteropServices.ComVisible(true)]
public virtual bool IsSubclassOf (Type c);

Parametri

c
Type

Tipo da confrontare con il tipo corrente.

Restituisce

Boolean

true se l'oggetto Type corrente deriva da c; in caso contrario, false. Questo metodo restituisce anche false se c e l'oggetto Type corrente sono uguali.

Implementazioni

Attributi

Eccezioni

Esempio

Nell'esempio seguente viene creata una classe Class1 denominata e una classe derivata denominata DerivedC1 . Chiama il metodo IsSubclassOf per mostrare che è una DerivedC1 sottoclasse di Class1 .

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

Commenti

È possibile chiamare il IsSubclassOf metodo per determinare uno degli elementi seguenti:

  • Indica se una classe deriva da un'altra.

  • Indica se un tipo deriva da ValueType . Tuttavia, IsValueType è un modo più efficiente per determinare se un tipo è un tipo valore.

  • Indica se un tipo deriva da Enum . Tuttavia, il IsEnum metodo è un modo più efficiente per determinare se un tipo è un'enumerazione.

  • Indica se un tipo è un delegato, ad esempio se deriva da Delegate o MulticastDelegate .

Il metodo non può essere usato per determinare se un'interfaccia deriva da un'altra interfaccia o IsSubclassOf se una classe implementa un'interfaccia. Usare il IsAssignableFrom metodo a tale scopo, come illustrato nell'esempio seguente.

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

Se l'oggetto corrente rappresenta un parametro di tipo nella definizione di un tipo o di un metodo generico, deriva dal vincolo di classe o da se non Type dispone di alcun vincolo di System.Object classe.

Nota

Tranne quando viene usato con le interfacce, IsSubclassOf è il contrario di IsAssignableFrom . In altri modo, t1.IsSubclassOf(t2) se è , è anche true t2.IsAssignableFrom(t1) true .

Questo metodo può essere sottoposto a override da una classe derivata.

Si applica a

Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

Vedi anche