C#中的“动态”关键字与C++中的"auto“类似吗
更多详细信息:
auto a = 5; //C++
dynamic a = 5; //C#
它们相似吗?
发布于 2014-05-22 12:28:41
不,它们不是相似的。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()方法,因此在运行时它将抛出错误
发布于 2014-05-22 12:23:53
不是的。
C#中auto的等价物是var -编译器将推导出适当的类型。dynamic是在运行时确定的,因此它永远不会抛出编译错误。来自MSDN:
在编译时,假定类型为dynamic的元素支持任何操作。
但是,如果代码无效,它将在运行时抛出错误。
https://stackoverflow.com/questions/23797746
复制相似问题