Type.IsSubclassOf(Type) Type.IsSubclassOf(Type) Type.IsSubclassOf(Type) Type.IsSubclassOf(Type) Method

Definizione

Determina se l'oggetto Type corrente deriva dall'oggetto Type specificato.Determines whether the current Type derives from the specified Type.

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
Public Overridable Function IsSubclassOf (c As Type) As Boolean

Parametri

c
Type Type Type Type

Tipo da confrontare con il tipo corrente.The type to compare with the current type.

Restituisce

true se l'oggetto Type corrente deriva da c; in caso contrario, false.true if the current Type derives from c; otherwise, false. Questo metodo restituisce anche false se c e l'oggetto Type corrente sono uguali.This method also returns false if c and the current Type are equal.

Implementazioni

Eccezioni

Esempi

Nell'esempio seguente viene creata una classe Class1 denominata e una classe derivata DerivedC1denominata.The following example creates a class named Class1 and a derived class named DerivedC1. Chiama il IsSubclassOf metodo per mostrare che DerivedC1 è una sottoclasse di Class1.It calls the IsSubclassOf method to show that DerivedC1 is a subclass of 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

Commenti

È possibile chiamare il IsSubclassOf metodo per determinare gli elementi seguenti:You can call the IsSubclassOf method to determine any of the following:

  • Indica se una classe deriva da un'altra classe.Whether one class derives from another.

  • Indica se un tipo deriva da ValueType.Whether a type derives from ValueType. Tuttavia, IsValueType è un modo più efficiente per determinare se un tipo è un tipo valore.However, the IsValueType is a more efficient way to determine whether a type is a value type.

  • Indica se un tipo deriva da Enum.Whether a type derives from Enum. Tuttavia, il IsEnum metodo è un modo più efficiente per determinare se un tipo è un'enumerazione.However, the IsEnum method is a more efficient way to determine whether a type is an enumeration.

  • Indica se un tipo è un delegato, ovvero se deriva da Delegate o. MulticastDelegateWhether a type is a delegate, that is, whether it derives from either Delegate or MulticastDelegate.

Il IsSubclassOf metodo non può essere usato per determinare se un'interfaccia deriva da un'altra interfaccia o se una classe implementa un'interfaccia.The IsSubclassOf method cannot be used to determine whether an interface derives from another interface, or whether a class implements an interface. Usare il IsAssignableFrom metodo a tale scopo, come illustrato nell'esempio seguente.Use the IsAssignableFrom method for that purpose, as the following example shows.

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

Se l'oggetto Type corrente rappresenta un parametro di tipo nella definizione di un tipo o di un metodo generico, deriva dal vincolo della classe o da System.Object se non ha vincoli di classe.If the current Type represents a type parameter in the definition of a generic type or generic method, it derives from its class constraint or from System.Object if it has no class constraint.

Nota

Eccetto se usato con le interfacce IsSubclassOf , è il contrario IsAssignableFromdi.Except when used with interfaces, IsSubclassOf is the converse of IsAssignableFrom. Ovvero, se t1.IsSubclassOf(t2) è true, t2.IsAssignableFrom(t1) sarà anche true.That is, if t1.IsSubclassOf(t2) is true, then t2.IsAssignableFrom(t1) is also true.

Questo metodo può essere sottoposto a override da una classe derivata.This method can be overridden by a derived class.

Si applica a

Vedi anche