文档介绍:第14章动态类型和特性
引用类型变量或者指针可以指示一个对象,也可以指示该类的派生类对象,所以有时必须要在运行时确定对象的类型,这就是所谓的动态类型确定,C#中可以使用typeof运算符、GetType方法和is运算符等工具动态地获取类型、方法、属性等信息。
动态类型
typeof运算符和GetType方法
对于任何一个类型,运用typeof运算符,能够获得一个类型的详细信息,typeof表达式有两种基本格式:
typeof (类型)
typeof ( void )
.1 typeof运算符
.2 GetType方法
使用GetType方法获得类型信息,基本的调用格式是:
()
MemberInfo类
,用于获取类的成员(构造函数、事件、字段、方法和属性等)信息的抽象基类。它继承Object,并且派生出许多重要的类,层次结构为:
从MethodBase类中派生两个很重要的类:
公共属性
公共方法
。,Type类继承了MemberInfo类和IReflect接口。。使用Type的成员可以获取关于类型声明、构造函数、方法、字段、属性和事件,以及该类所属的模块和程序集。
Type类有很多的成员,在此仅介绍其中若干常用的成员。
公共属性
公共方法
is运算符
is运算符用于检查对象运行时的类型是否与给定类型兼容。使用is运算符的格式如下:
e is T
其中e是表达式,T是类型,运算的结果是bool值。表示e的类型是否可以通过引用转换、装箱或者拆箱转换成为T。
请注意,在讨论运算符is时,我们所说的转换,仅仅是指引用转换、装箱和拆箱所引起的类型转换,其它的转换,如,用户自定义的转换不能使用is运算符。
反射
反射(reflection)是一种动态程序组织和管理技术。反射提供了封装程序集、模块和类型的对象,可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,并且调用类型的方法或访问它的字段、属性等。
特性
使用ObsoleteAttribute
使用ConditionalAttribute
其作用是标记一个方