首先,反思动态类型以判断它是否是动态类型

2023-11-29

有没有一种方法可以判断对象分配的类型是否是动态类型?

例如:

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(使用前将#替换为@)

首先,反思动态类型以判断它是否是动态类型 的相关文章

随机推荐