有没有一种方法可以判断一个对象被分配到的类型是否是动态类型?
例如:
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."?发布于 2010-05-22 00:27:20
有没有一种方法可以判断一个对象被分配到的类型是否是动态类型?
不,如果foo是一个局部变量,就不会。
“动态”是一个编译时特性。这只是对编译器的一个提示,意思是“不必费心在编译时对此表达式进行类型分析;相反,生成在运行时调用特殊版本的编译器的代码”。
在运行时,局部变量foo只是一个object类型的局部变量,局部变量的内容是对Cat的引用。编译器知道代码的作者希望在编译时避免在foo上进行类型分析的事实已经丢失。
通过使用反射检查方法上由编译器生成的属性,可以确定返回对象的方法是否实际上返回动态。
https://stackoverflow.com/questions/2883737
复制相似问题