概述反射
• 通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象。
• 反射机制允许程序在执行过程中动态地添加各种功能。
运行时类型标识
•运行时类型标识(RTTI),可以在程序执行期间判定对象类型。例如使用它能够确切地知道基类引用指向了什么类型对象。
•运行时类型标识,能预先测试某个强制类型转换操作,能否成功,从而避免无效的强制类型转换异常。
•在c#中有三个支持RTTI的关键字:is 、 as 、typeof。 下面依次介绍他们
is运算符:
通过is运算符,能够判断对象类型是否为特顶类型,如果两种类型是相同类型,或者两者之间存在引用,装箱拆箱转换,则表明两种类型是兼容的。
class Program
{
static void Main(string[] args)
{
A a = new A();
B b = new B();
if (a is A)
{
Console.WriteLine(\"a is an A\"); //这个打印,因为a 是 A 类型的对象
}
if (b is A)
{
//这个打印,因为b是B类型的对象,而B类型派生于A类型,由于b对象可以转换为A类型,因此b对象与A类型是兼容的,但是反过来就不成立,例如下面不打印
Console.WriteLine(\"b is an A because it is derived from\");
}
if (a is B)
{
//这个不打印
Console.WriteLine(\"This won\'t display , because a not derived from B\");
}
if (a is object)
{
//这个打印
Console.WriteLine(\"a is an object\");
}
Console.ReadKey();
}
}
class A { }
class B : A { }
本文地址:https://www.stayed.cn/item/24684
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我