Type.IsSubclassOf(Type) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
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
Параметры
- c
- Type
Тип для сравнения с текущим типом.
Возвращаемое значение
Значение true
, если текущий объект Type
является производным от c
; в противном случае — false
. Этот метод также возвращает значение false
, если параметр c
и текущий объект Type
равны.
Реализации
- Атрибуты
Исключения
c
имеет значение null
.
Примеры
В следующем примере создается класс с именем Class1
и производный класс с именем DerivedC1
. Он вызывает IsSubclassOf метод, чтобы продемонстрировать, что DerivedC1
является подклассом 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
Комментарии
Метод можно вызвать IsSubclassOf для определения любого из следующих элементов:
Является ли один класс производным от другого.
Является ли тип производным от ValueType . Однако IsValueType более эффективный способ определить, является ли тип типом значения.
Является ли тип производным от Enum . Однако IsEnum метод является более эффективным способом определения того, является ли тип перечислением.
Является ли тип делегатом, то есть является ли он производным от Delegate или MulticastDelegate .
IsSubclassOfМетод не может использоваться для определения того, является ли интерфейс производным от другого интерфейса или реализует ли класс интерфейс. Используйте IsAssignableFrom для этой цели метод, как показано в следующем примере.
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
Если текущий объект Type представляет параметр типа в определении универсального типа или универсального метода, он является производным от его ограничения класса или от, System.Object Если у него нет ограничения класса.
Примечание
За исключением случаев использования с интерфейсами, IsSubclassOf является обратным IsAssignableFrom . То есть, если t1.IsSubclassOf(t2)
имеет значение true
, то t2.IsAssignableFrom(t1)
также имеет значение true
.
Этот метод может быть переопределен производным классом.