“dynamic”关键字在C#中是否像C++中的“auto”一样工作?
更多细节:
更多细节:
auto a = 5; //C++
dynamic a = 5; //C#
它们是否相似?不,它们并不相似。据我所知,auto
在 C++ 中与 C# 的 var
相似。
auto
会在编译时期被解析,而不是运行时期。
来自 MSDN
auto 关键字指示编译器使用已声明变量的初始化表达式来推导其类型。
因此,在您的代码中,
auto a = 5; //C++
a.ToUpper(); // Compile time error
但是
dynamic a = 5; //C#
a.ToUpper(); //No error at compile time since it will resolve @ runtime
但是在运行时,它将会抛出一个错误,因为 int
类型没有 ToUpper()
方法。
在C#中,auto
的等价物是var
——编译器将推断出适当的类型。 dynamic
是在运行时确定的,因此它永远不会引发编译错误。根据MSDN:
“在编译时,被标记为动态类型的元素被假定支持任何操作。”
但是,如果代码无效,它将在运行时引发错误。
auto
在编译时解析,而dynamic
是在运行时解析。 - Rakib