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

时间:2014-05-22 04:19:15

标签: c# c++ dynamic syntax reference

"动态" C#中的关键字就像" auto"在C ++中

更多详情:

auto a = 5; //C++

dynamic a = 5; //C#

它们相似吗?

2 个答案:

答案 0 :(得分:8)

没有

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

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

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

答案 1 :(得分:7)

不,他们不相似。 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()方法