有没有一种方法可以判断对象分配的类型是否是动态类型?
例如:
dynamic foo = GetCat();
Console.WriteLine( (foo is Cat).ToString() ); // will print True because
// at the execution time, foo will have assumed the Cat type. However, is
// there a mechanism by which I can reflect on foo and say, "This guy was assigned
// a dynamic type, to begin with."?
有没有一种方法可以判断对象分配的类型是否是动态类型?
不,如果 foo 是局部变量则不是。
“动态”是一个编译时功能。这只是对编译器的一个提示,意味着“不必费心在编译时对此表达式进行类型分析;相反,生成在运行时调用特殊版本的编译器的代码”。
在运行时,局部变量 foo 只是一个 object 类型的局部变量,局部变量的内容是对 Cat 的引用。编译器知道代码作者希望在编译时避免对 foo 进行类型分析的事实已经丢失。
It is通过使用反射检查方法上编译器生成的属性,可以确定返回对象的方法是否实际上返回动态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)