关键字"auto"C++和"动态"C#

use*_*338 4 c# c++ syntax reference dynamic

C#中的"dynamic"关键字在C++中是否像"auto"一样工作

更多细节:

auto a = 5; //C++

dynamic a = 5; //C#

它们相似吗?

bha*_*lin 9

没有.

autoC#中的等价物是var- 编译器将推导出适当的类型.dynamic在运行时确定,因此它永远不会抛出编译错误.来自MSDN:

"在编译时,假定键入动态的元素支持任何操作."

但是,如果代码无效,它将在运行时抛出错误.


Rah*_*hul 9

不,他们不相似.AFAIK,autovarC#类似.

auto 得到解决的编译时间,而不是运行时.

来自MSDN

auto关键字指示编译器使用声明的变量的初始化表达式来推断其类型.

所以在你的代码中

auto a = 5; //C++
a.ToUpper(); // Compile time error
Run Code Online (Sandbox Code Playgroud)

dynamic a = 5; //C# 
a.ToUpper(); //No error at compile time since it will resolve @ runtime
Run Code Online (Sandbox Code Playgroud)

但是在运行时它会抛出错误,因为int类型没有toupper()方法