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

Definição

Determina se o Type atual deriva do Type especificado.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

Parâmetros

c
Type Type Type Type

O tipo a ser comparado com o tipo atual.The type to compare with the current type.

Retornos

true se o Type atual derivar de c; caso contrário, false.true if the current Type derives from c; otherwise, false. Esse método também retorna false se c e o Type atual forem iguais.This method also returns false if c and the current Type are equal.

Implementações

Exceções

Exemplos

O exemplo a seguir cria uma classe Class1 chamada e uma classe derivada DerivedC1denominada.The following example creates a class named Class1 and a derived class named DerivedC1. Ele chama o IsSubclassOf método para mostrar que DerivedC1 é uma subclasse de 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

Comentários

Você pode chamar o IsSubclassOf método para determinar qualquer um dos seguintes:You can call the IsSubclassOf method to determine any of the following:

  • Se uma classe deriva de outra.Whether one class derives from another.

  • Se um tipo deriva de ValueType.Whether a type derives from ValueType. No entanto IsValueType , o é uma maneira mais eficiente de determinar se um tipo é um tipo de valor.However, the IsValueType is a more efficient way to determine whether a type is a value type.

  • Se um tipo deriva de Enum.Whether a type derives from Enum. No entanto IsEnum , o método é uma maneira mais eficiente de determinar se um tipo é uma enumeração.However, the IsEnum method is a more efficient way to determine whether a type is an enumeration.

  • Se um tipo é um delegado, ou seja, se ele deriva de Delegate ou. MulticastDelegateWhether a type is a delegate, that is, whether it derives from either Delegate or MulticastDelegate.

O IsSubclassOf método não pode ser usado para determinar se uma interface deriva de outra interface ou se uma classe implementa uma interface.The IsSubclassOf method cannot be used to determine whether an interface derives from another interface, or whether a class implements an interface. Use o IsAssignableFrom método para essa finalidade, como mostra o exemplo a seguir.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 Current Type representar um parâmetro de tipo na definição de um tipo genérico ou um método genérico, ele deriva de sua restrição de classe ou de System.Object se não tiver nenhuma restrição de 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.

Observação

Exceto quando usado com interfaces, IsSubclassOf é o converso de IsAssignableFrom.Except when used with interfaces, IsSubclassOf is the converse of IsAssignableFrom. Isto é, se t1.IsSubclassOf(t2) for true, t2.IsAssignableFrom(t1) também trueé.That is, if t1.IsSubclassOf(t2) is true, then t2.IsAssignableFrom(t1) is also true.

Este método pode ser substituído por uma classe derivada.This method can be overridden by a derived class.

Aplica-se a

Veja também