zoukankan      html  css  js  c++  java
  • C# 中一些类关系的判定方法

    1.  IsAssignableFrom实例方法 判断一个类或者接口是否继承自另一个指定的类或者接口。

    public interface IAnimal { }
    public interface IDog : IAnimal { }
    public class Dog : IDog { }
    public class Cate : IAnimal { }
    public class Parrot { }
        	
    var iAnimalType = typeof(IAnimal);
    var iDogType = typeof(IDog);
    var dogType = typeof(Dog);
    var cateType = typeof(Cate);
    var parrotType = typeof(Parrot);
    
    Console.WriteLine(iAnimalType.IsAssignableFrom(iDogType)
        ? $"{iDogType.Name} was inherited from {iAnimalType.Name}"
        : $"{iDogType.Name} was not inherited from {iAnimalType.Name}");
    
    Console.WriteLine(iAnimalType.IsAssignableFrom(dogType)
        ? $"{dogType.Name} was inherited from {iAnimalType.Name}"
        : $"{dogType.Name} was not inherited from {iAnimalType.Name}");
    
    Console.WriteLine(iDogType.IsAssignableFrom(dogType)
        ? $"{dogType.Name} was inherited from {iDogType.Name}"
        : $"{dogType.Name} was not inherited from {iDogType.Name}");
    
    Console.WriteLine(iAnimalType.IsAssignableFrom(cateType)
        ? $"{cateType.Name} was inherited from {iAnimalType.Name}"
        : $"{cateType.Name} was not inherited from {iAnimalType.Name}");
    
    Console.WriteLine(iAnimalType.IsAssignableFrom(parrotType)
        ? $"{parrotType.Name} inherited from {iAnimalType.Name}"
        : $"{parrotType.Name} not inherited from {iAnimalType.Name}");
    Console.ReadKey();

    输出结果:

    IDog was inherited from IAnimal
    Dog was inherited from IAnimal
    Dog was inherited from IDog
    Cate was inherited from IAnimal
    Parrot not inherited from IAnimal

    2.IsInstanceOfType 判断某个对象是否继承自指定的类或者接口

    Dog d=new Dog();
    var result=typeof(IDog).IsInstanceOfType(d);
    Console.WriteLine(result? $"Dog was inherited from IDog": $"Dog was not inherited from IDog");
    Console.ReadKey();

    输出结果:

    Dog was inherited from IDog

    3.IsSubclassOf 判断一个对象的类型是否继承自指定的类,不能用于接口的判断,只能用于判定类的关系

    public interface IAnimal { }
    public interface IDog : IAnimal { }
    public class Dog : IDog { }
    public class Husky : Dog { }
    public class Cate : IAnimal { }
    public class Parrot { }
    Husky husky = new Husky();
    var result = husky.GetType().IsSubclassOf(typeof(Dog));
    Console.WriteLine(result ? $"Husky was inherited from Dog" : $"Husky was not inherited from Dog");
    

    输出结果:

    Husky was inherited from Dog

    这个方法不能用于接口,如果传接口进去永远返回的都是false

    Dog dog = new Dog();
    var dogResult = dog.GetType().IsSubclassOf(typeof(IDog));
    Console.WriteLine(dogResult);

    结果:

    false

  • 相关阅读:
    ajax
    cookie
    JavaScript基本语法
    HTML css 格式布局
    HTML 表单
    html 一般标签 常用标签 表格
    WinForm——操作word文档
    WinForm进程 线程
    音乐
    注册 传值
  • 原文地址:https://www.cnblogs.com/vaiyanzi/p/10179829.html
Copyright © 2011-2022 走看看