Type.IsSubclassOf(Type) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
Parâmetros
- c
- Type
O tipo a ser comparado com o tipo atual.
Retornos
true
se o Type
atual derivar de c
; caso contrário, false
. Esse método também retorna false
se c
e o Type
atual forem iguais.
Implementações
- Atributos
Exceções
c
é null
.
Exemplos
O exemplo a seguir cria uma classe chamada Class1
e uma classe derivada denominada DerivedC1
. Ele chama o IsSubclassOf método para mostrar que DerivedC1
é uma subclasse de 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:
Se uma classe deriva de outra.
Se um tipo deriva de ValueType . No entanto, o IsValueType é uma maneira mais eficiente de determinar se um tipo é um tipo de valor.
Se um tipo deriva de Enum . No entanto, o IsEnum método é uma maneira mais eficiente de determinar se um tipo é uma enumeração.
Se um tipo é um delegado, ou seja, se ele deriva de Delegate ou 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. Use o IsAssignableFrom método para essa finalidade, como mostra o exemplo a seguir.
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.
Observação
Exceto quando usado com interfaces, IsSubclassOf é o converso de IsAssignableFrom . Isto é, se t1.IsSubclassOf(t2)
for true
, t2.IsAssignableFrom(t1)
também é true
.
Este método pode ser substituído por uma classe derivada.