Roy*_*mir 2 c# var dynamic .net-4.0
如果我们有:
dynamic x = "hello"; // Static type is dynamic, runtime type is string
var y = "hello"; // Static type is string, runtime type is string
Run Code Online (Sandbox Code Playgroud)
精细.
关于什么
dynamic x = *veryComplicatedRunTimeStructure_UnknownatCompileTime.*;
var y=x;
Run Code Online (Sandbox Code Playgroud)
它DOES编译!
我在second这里有一个问题.
众所周知,它是var在编译时评估的.

但是在编译时它没有关于类型的线索....
所以... y的编译类型是什么?
当赋值表达式的类型是dynamic,隐式声明的变量的类型也是如此.这里没什么特别的dynamic- 你的代码相当于:
dynamic x = new { t = 3, y = 3 };
dynamic y = x;
Run Code Online (Sandbox Code Playgroud)
从C#4规范的第8.5.1节开始:
在局部变量声明的上下文中,标识符
var充当上下文关键字.当局部变量类型被指定为var与没有类型命名var是在范围内,声明可以是隐式类型变量声明,其类型从相关联的初始化表达式的类型推断.[...]
在隐式类型的局部变量声明中,声明的局部变量的类型与用于初始化变量的表达式的类型相同.
所以在这里,表达式是dynamic,变量也是如此......