C++中的关键字"auto"和C#中的关键字"dynamic"

14
“dynamic”关键字在C#中是否像C++中的“auto”一样工作?
更多细节: auto a = 5; //C++ dynamic a = 5; //C# 它们是否相似?

6
auto 在编译时解析,而 dynamic 是在运行时解析。 - Rakib
2个回答

27

不,它们并不相似。据我所知,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() 方法。


16

在C#中,auto的等价物是var——编译器将推断出适当的类型。 dynamic是在运行时确定的,因此它永远不会引发编译错误。根据MSDN:

“在编译时,被标记为动态类型的元素被假定支持任何操作。”

但是,如果代码无效,它将在运行时引发错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接