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

Определение

Определяет, является ли текущий Type производным от указанного Type.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

Параметры

c
Type Type Type Type

Тип для сравнения с текущим типом.The type to compare with the current type.

Возвраты

Значение true, если текущий объект Type является производным от c; в противном случае — false.true if the current Type derives from c; otherwise, false. Этот метод также возвращает значение false, если параметр c и текущий объект Type равны.This method also returns false if c and the current Type are equal.

Реализации

Исключения

Свойство c имеет значение null.c is null.

Примеры

В следующем примере создается класс с именем Class1 и производный класс с DerivedC1именем.The following example creates a class named Class1 and a derived class named DerivedC1. Он вызывает IsSubclassOf метод, чтобы продемонстрировать, DerivedC1 что является подклассом. Class1It 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

Комментарии

IsSubclassOf Метод можно вызвать для определения любого из следующих элементов:You can call the IsSubclassOf method to determine any of the following:

  • Является ли один класс производным от другого.Whether one class derives from another.

  • Является ли тип производным от ValueType.Whether a type derives from ValueType. IsValueType Однако более эффективный способ определить, является ли тип типом значения.However, the IsValueType is a more efficient way to determine whether a type is a value type.

  • Является ли тип производным от Enum.Whether a type derives from Enum. IsEnum Однако метод является более эффективным способом определения того, является ли тип перечислением.However, the IsEnum method is a more efficient way to determine whether a type is an enumeration.

  • Является ли тип делегатом, то есть является ли он производным от Delegate или. MulticastDelegateWhether a type is a delegate, that is, whether it derives from either Delegate or MulticastDelegate.

IsSubclassOf Метод не может использоваться для определения того, является ли интерфейс производным от другого интерфейса или реализует ли класс интерфейс.The IsSubclassOf method cannot be used to determine whether an interface derives from another interface, or whether a class implements an interface. Используйте для этой цели метод,какпоказановследующемпримере.IsAssignableFromUse 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

Если текущий Type объект представляет параметр типа в определении универсального типа или универсального метода, он является производным от его ограничения класса или от System.Object , если у него нет ограничения класса.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.

Примечание

За исключением случаев использования с IsSubclassOf интерфейсами, является IsAssignableFromобратным.Except when used with interfaces, IsSubclassOf is the converse of IsAssignableFrom. То есть, если t1.IsSubclassOf(t2) имеет trueзначение, t2.IsAssignableFrom(t1) то также trueимеет значение.That is, if t1.IsSubclassOf(t2) is true, then t2.IsAssignableFrom(t1) is also true.

Этот метод может быть переопределен производным классом.This method can be overridden by a derived class.

Применяется к

Дополнительно