Type.IsSubclassOf(Type) 메서드

정의

현재 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

현재 형식과 비교할 형식입니다.The type to compare with the current type.

반환

현재 trueType에서 파생되면 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.

구현

특성

예외

cnull입니다.c is null.

예제

다음 예에서는 이라는 클래스를 만듭니다 Class1 및 파생된 클래스가 DerivedC1합니다.The following example creates a class named Class1 and a derived class named DerivedC1. 호출 된 IsSubclassOf 표시 하는 방법 DerivedC1 서브 클래스입니다 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

설명

호출할 수 있습니다는 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 또는 MulticastDelegate합니다.Whether 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. 사용 된 IsAssignableFrom 다음 예와 같이를 위해서는 메서드.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

하는 경우 현재 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.

적용 대상

추가 정보