chapter36Type的IsAssignableFrom(Type c)方法以及更多重要方法

bool IsAssignableFrom(Type c)

功能:用来判断一个类Class1和另一个类Class2(参数)是否相同或是另一个类的父类或接口。

其实就是一个类是否是参数类的父类或接口

bool IsInstanceOfType(object o)

功能:判断对象o是否是当前类(或者子类)的实例,或者实现本接口

(即:当前类可以是o对象的类、父类、接口)

bool IsSubclassOf(Type c)

功能: 一个类是否为参数类的子类(只适用于类,不适用接口)

源代码:

Men类:

/***
 *父类 
 * 
 */


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace chapter36Type的IsAssignableFrom_Type_c_方法
{
    public class Men
    {
    }

}

ZhangSan类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace chapter36Type的IsAssignableFrom_Type_c_方法
{
    public class ZhangSan : Men , ICanSpeak
    {
    }

}

Dog类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace chapter36Type的IsAssignableFrom_Type_c_方法
{
    public class Dog
    {
    }

}

ICanSpeak接口:

/***
 *接口,会说话 
 * 
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace chapter36Type的IsAssignableFrom_Type_c_方法
{
    interface ICanSpeak
    {
    }

}

主程序:

/***
 *学习Type类更多的方法
 *1.判断一个类是否是参数类的父类或接口(参数类是否实现了接口)
 *2.参数类是否为一个类的实例或者实现了接口
 *3.参数类是否为一个类的子类(不能是接口,只能是类)
 * 
 * 
 * 
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;


namespace chapter36Type的IsAssignableFrom_Type_c_方法
{
    class Program
    {
        /// <summary>
        /// 判断一个类是否是参数类的父类或接口(参数类是否实现了接口)
        /// </summary>
        public void Test1()
        {
            Type typeMen = typeof(Men);
            Type typeZhangSan = typeof(ZhangSan);
            Type typeDog = typeof(Dog);
            Type typeICanSpeak = typeof(ICanSpeak);
            Console.WriteLine(typeMen.IsAssignableFrom(typeZhangSan));
            Console.WriteLine(typeMen.IsAssignableFrom(typeDog));
            //接口判断
            Console.WriteLine(typeICanSpeak.IsAssignableFrom(typeZhangSan));
            Console.WriteLine(typeICanSpeak.IsAssignableFrom(typeDog));
        }
       /// <summary>
        /// 一个类是否为参数类的实例
       /// </summary>
        public void Test2()
        {
            Type typeMen = typeof(Men);
            Type typeICanSpeak = typeof(ICanSpeak);
            ZhangSan zhangsanObj = new ZhangSan();
            Men menObj = new Men();
            Dog dogObj = new Dog();
            Console.WriteLine(typeMen.IsInstanceOfType(menObj));
            Console.WriteLine(typeMen.IsInstanceOfType(zhangsanObj));
            Console.WriteLine(typeMen.IsInstanceOfType(dogObj));
            Console.WriteLine("----------");
            Console.WriteLine(typeICanSpeak.IsInstanceOfType(menObj));
            Console.WriteLine(typeICanSpeak.IsInstanceOfType(zhangsanObj));
            Console.WriteLine(typeICanSpeak.IsInstanceOfType(dogObj));


        }
        /// <summary>
        /// 一个类是否为参数类的子类(不能是接口,只能是类)
        /// </summary>
        public void Test3()
        {
            Type typeMen = typeof(Men);
            Type typeZhangSan = typeof(ZhangSan);
            Type typeDog = typeof(Dog);
            Console.WriteLine(typeZhangSan.IsSubclassOf(typeMen));
            Console.WriteLine(typeZhangSan.IsSubclassOf(typeDog));


        }
        static void Main(string[] args)
        {
            Program obj = new Program();
            //obj.Test1();
           // obj.Test2();
            obj.Test3();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值