System.Type.IsSubclassOf 方法

方法描述

确定当前 Type 表示的类是否是从指定的 Type 表示的类派生的。

语法定义(C# System.Type.IsSubclassOf 方法 的用法)

[ComVisibleAttribute(true)]
public virtual bool IsSubclassOf(
	Type c
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
c System-Type 要与当前类型进行比较的类型。
返回值 System.Boolean 如果 Type 由 c 参数表示并且当前的 Type 表示类,并且当前的 Type 所表示的类是从 c 所表示的类派生的,则为 true;否则为 false。 如果 c 和当前的 Type 表示相同的类,则此方法还返回 false。

提示和注释

IsSubclassOf 方法不能用于确定某个接口是否派生自另一个接口或某个类是否实现了某个接口。 对于此目的,应该使用 GetInterface 方法。 请注意,如果某个类型是从接口派生的,而且该类型是 Object 的子类,则此方法将返回 true。

如果当前 Type 表示泛型类型或泛型方法的定义中的类型参数,则它派生自其类约束;如果它没有类约束,则派生自 System.Object。

注意

如果 IsSubclassOf 是 IsAssignableFrom 的逆反。 也就是说,如果 t1.IsSubclassOf(t2) 为 true,则 t2.IsAssignableFrom(t1) 也为 true。

此方法可由派生类重写。

System.Type.IsSubclassOf 方法例子

下面的示例演示如何通过创建类的实例及其派生类的实例来使用 IsSubclassOf 方法。

using System;

public class Class1 { }
public class DerivedC1 : Class1 { }

class IsSubclassTest
{
    public static void Main()
    {
        Class1 myClass = new Class1();
        DerivedC1 myDClass = new DerivedC1();
        Type myClassType = myClass.GetType();
        Type myDClassType = myDClass.GetType();

        // Returns true:
        Console.WriteLine("myDClass subclass of myClass: {0}", myDClassType.IsSubclassOf(myClassType));
        Console.ReadLine();
    }
}

异常

异常 异常描述
ArgumentNullException c 参数为 null。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。