"动态" C#中的关键字就像" auto"在C ++中
更多详情:
auto a = 5; //C++
dynamic a = 5; //C#
它们相似吗?
答案 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()
方法