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.

참고

인터페이스와 함께 사용 하는 경우를 제외 하 고 IsSubclassOfIsAssignableFrom의 반대입니다.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.

적용 대상

추가 정보