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.不能判断接口.

     
  • 相关阅读:
    从零开始,SpreadJS新人学习笔记【第4周】
    如何使用JavaScript实现前端导入和导出excel文件
    【案例分享】在 React 框架中使用 SpreadJS 纯前端表格控件
    中国高考志愿填报与职业趋势分析
    Vue 2019开发者图谱
    从零开始,SpreadJS新人学习笔记【第3周】
    从零开始,SpreadJS 新人学习笔记(第二周)
    从零开始,SpreadJS 新人学习笔记
    Spread.NET 表格控件 V12.1 正式发布
    汇编语言-端口
  • 原文地址:https://www.cnblogs.com/linybo/p/13258969.html
Copyright © 2011-2022 走看看