Type.IsSubclassOf(Type) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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
現在の型と比較する型。
戻り値
現在の Type
が c
から派生している場合は true
。それ以外の場合は 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
なります。
このメソッドは、派生クラスによってオーバーライドできます。