【问题标题】:keyword "auto" C++ and "dynamic" C#关键字“自动”C++ 和“动态”C#
【发布时间】:2014-07-10 22:55:12
【问题描述】:

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

更多细节:

auto a = 5; //C++

dynamic a = 5; //C#

它们相似吗?

【问题讨论】:

  • auto 在编译时解析,而dynamic 在运行时解析。

标签: c# c++ dynamic syntax reference


【解决方案1】:

不,它们不相似。 AFAIK,auto 将类似于 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() 方法

【讨论】:

    【解决方案2】:

    没有。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 2011-04-16
      • 2016-01-15
      • 2011-12-31
      • 2011-11-26
      • 2010-09-22
      相关资源
      最近更新 更多