关键字“auto"c++和“动态”;c#

本文关键字:动态 c++ quot 关键字 auto | 更新日期: 2023-09-27 18:04:44

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

更多细节:

auto a = 5; //C++

dynamic a = 5; //C#

它们相似吗?

关键字“auto"c++和“动态”;c#

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

No.

c#中与auto等价的是var——编译器会推断出相应的类型。dynamic是在运行时确定的,因此它永远不会抛出编译错误。从MSDN:

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

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