首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关键字"auto“C++和”动态“C#

关键字"auto“C++和”动态“C#
EN

Stack Overflow用户
提问于 2014-05-22 12:19:15
回答 2查看 17.5K关注 0票数 11

C#中的“动态”关键字与C++中的"auto“类似吗

更多详细信息:

auto a = 5; //C++

dynamic a = 5; //C#

它们相似吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-22 12:28:41

不,它们不是相似的。AFAIK,auto将类似于C#中的var

auto被解析为编译时,而不是运行时。

来自MSDN

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

所以在你的代码中

代码语言:javascript
复制
auto a = 5; //C++
a.ToUpper(); // Compile time error

代码语言:javascript
复制
dynamic a = 5; //C# 
a.ToUpper(); //No error at compile time since it will resolve @ runtime

但由于int类型没有ToUpper()方法,因此在运行时它将抛出错误

票数 21
EN

Stack Overflow用户

发布于 2014-05-22 12:23:53

不是的。

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

在编译时,假定类型为dynamic的元素支持任何操作。

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

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23797746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档