gpt4 book ai didi

c# - 反射(reflection)动态类型以判断它是否是动态类型,首先

转载 作者:行者123 更新时间:2023-11-30 16:33:49 26 4
gpt4 key购买 nike

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

例如:

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."?

最佳答案

Is there a way that one can tell if the type that an object was assigned to was a dynamic type?

不,如果 foo 是局部变量则不会。

“动态”是一个编译时特性。这只是对编译器的提示,意思是“不要在编译时尝试对该表达式进行类型分析;相反,生成在运行时调用特殊版本编译器的代码”。

在运行时,局部变量foo只是一个object类型的局部变量,局部变量的内容是对一个Cat的引用。编译器知道代码的作者希望在编译时避免对 foo 进行类型分析的事实已经丢失。

可以通过使用反射检查方法上编译器生成的属性来确定返回对象的方法是否实际上返回动态。

关于c# - 反射(reflection)动态类型以判断它是否是动态类型,首先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com