zoukankan      html  css  js  c++  java
  • C#Type类中的IsAssignableFrom、IsInstanceOfType、IsSubclassOf

    先写两个有继承关系的类Person、Son和一个接口IProgram:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace TestType
    {
        interface IProgram
        {
            void Program ();
        }
    }
    

      

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace TestType
    {
        public class Person : IProgram
        {
            public string Name;
            public int age;
     
            public void Say ()
            {
                Console.WriteLine("Person Say");
            }
     
            public void Program()
            {
                Console.WriteLine("Person Program");
            }
        }
    }
    

      

    一.测试IsAssignableFrom.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace TestType
    {
        class Program
        {
            static void Main(string[] args)
            {
                Type personTp = typeof(Person);
                Type sonTp = typeof(Son);
                Type programTp = typeof(IProgram);
     
                Console.WriteLine(personTp.IsAssignableFrom(sonTp));
                Console.WriteLine(programTp.IsAssignableFrom (personTp));
                Console.WriteLine(programTp.IsAssignableFrom(sonTp));
                Console.WriteLine(programTp.IsAssignableFrom(programTp));
            }
        }
    }

    结果:

    总结:

    IsAssignableFrom判断参数类:

    1.是否为当前类或接口.

    2.是否继承当前类.

    3.是否实现当前接口.

    ----------------------------------------------------------------------------------------------------------------

    二.测试IsInstanceOfType.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace TestType
    {
        class Program
        {
            static void Main(string[] args)
            {
                Type personTp = typeof(Person);
                Type sonTp = typeof(Son);
                Type programTp = typeof(IProgram);
     
                Person person = new Person();
                Son son = new Son();
     
                Console.WriteLine(personTp.IsInstanceOfType(person));
                Console.WriteLine(personTp.IsInstanceOfType(son));
     
                Console.WriteLine(sonTp.IsInstanceOfType(person));
                Console.WriteLine(sonTp.IsInstanceOfType(son));
     
                Console.WriteLine(programTp.IsInstanceOfType(person));
                Console.WriteLine(programTp.IsInstanceOfType(son));
            }
        }
    }

    结果:

    总结:

    IsInstanceOfType判断参数对象:

    1.是否为当前类的实例.

    2.是否实现了当前接口.

    --------------------------------------------------------------------------------------------------------------------------------

    三.测试IsSubclassOf.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace TestType
    {
        class Program
        {
            static void Main(string[] args)
            {
                Type personTp = typeof(Person);
                Type sonTp = typeof(Son);
                Type programTp = typeof(IProgram);
     
                Person person = new Person();
                Son son = new Son();
     
                Console.WriteLine(sonTp.IsSubclassOf(personTp));
                Console.WriteLine(sonTp.IsSubclassOf(sonTp));
                Console.WriteLine(sonTp.IsSubclassOf(programTp));
            }
        }
    }

    结果:

    总结:

    IsSubclassOf判断参数类型:

    1.是否为当前类的父类.

    2.不能判断接口.

     
  • 相关阅读:
    关于ajaxfileupload的使用方法以及一些问题
    vs里根据json快速创建对应类的方法
    20175227张雪莹 2018-2019-2 《Java程序设计》第四周学习总结
    关于:socket阻塞、非阻塞,同步、异步、I/O模型
    推挽输出理解
    使用指针做形参来解决函数的副本机制
    c语言副本机制
    开关电源电容选择
    MFC入门示例之水平滚动条和垂直滚动条(CScroll Bar)
    MFC入门示例之组合框(CComboBox)、列表框(CListBox)
  • 原文地址:https://www.cnblogs.com/linybo/p/13258969.html
Copyright © 2011-2022 走看看